HarmonyOS鸿蒙Next中北京时间字符串 2024-04-05 00:00:00 如何按北京时区转化出来时间戳,并转化为本地时区的时间字符串

HarmonyOS鸿蒙Next中北京时间字符串 2024-04-05 00:00:00 如何按北京时区转化出来时间戳,并转化为本地时区的时间字符串 后台给到的目前都是北京时区的时间,需要转为手机当前时区的时间,目前没有找到像Android可以转化的方式

DateFormat format = new SimpleDateFormat(getCurrentPattern(timeStr));
format.setTimeZone(TimeZone.getTimeZone("GMT+08"));
return format.parse(timeStr);
3 回复

使用三方库dayjs,参考demo:

import dayjs from "dayjs";
@Entry
@Component
struct TimeDemo {
  getTimeTest():string {
    let currentTimezone = new Date().getTimezoneOffset();
    let durTime = (-480 - currentTimezone ) * 60 * 1000;
    let currentTimeMill = new Date().getTime()
    let currentTimeBeijing = currentTimeMill - durTime;
    let dateStr = dayjs(currentTimeBeijing).format("YYYY-MM-DD HH:mm:ss")
    console.log("BEIJINGTIME = " + dateStr);
    return dateStr;
  }

  build() {
    RelativeContainer() {
      Text(this.getTimeTest())
    }
    .height('100%')
    .width('100%')
  }
}

参考链接:https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tree/master/dayjs

更多关于HarmonyOS鸿蒙Next中北京时间字符串 2024-04-05 00:00:00 如何按北京时区转化出来时间戳,并转化为本地时区的时间字符串的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,要将北京时间字符串 2024-04-05 00:00:00 转化为时间戳,并转化为本地时区的时间字符串,可以使用以下步骤:

  1. 将北京时间字符串转化为时间戳: 使用 Date 类的 parse 方法将字符串解析为时间戳。确保字符串格式为 yyyy-MM-dd HH:mm:ss

    let beijingTimeString = "2024-04-05 00:00:00";
    let timestamp = Date.parse(beijingTimeString);
    
  2. 将时间戳转化为本地时区的时间字符串: 使用 Date 类的 toLocaleString 方法将时间戳转化为本地时区的时间字符串。

    let localTimeString = new Date(timestamp).toLocaleString();
    

这样,localTimeString 将包含本地时区的时间字符串。

在HarmonyOS鸿蒙Next中,可以使用java.time包来处理时间。首先,将北京时间字符串解析为LocalDateTime,然后转换为ZonedDateTime并指定时区为Asia/Shanghai。接着,获取时间戳,再将其转换为本地时区的ZonedDateTime,最后格式化为字符串。示例代码如下:

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class TimeConversion {
    public static void main(String[] args) {
        String beijingTime = "2024-04-05 00:00:00";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime localDateTime = LocalDateTime.parse(beijingTime, formatter);
        
        ZonedDateTime beijingZonedDateTime = localDateTime.atZone(ZoneId.of("Asia/Shanghai"));
        long timestamp = beijingZonedDateTime.toEpochSecond();
        
        ZonedDateTime localZonedDateTime = ZonedDateTime.ofInstant(Instant.ofEpochSecond(timestamp), ZoneId.systemDefault());
        String localTime = localZonedDateTime.format(formatter);
        
        System.out.println("Local Time: " + localTime);
    }
}

此代码将北京时间转换为时间戳,并输出本地时区的时间字符串。

回到顶部