HarmonyOS 创建Date类传进去年月日时分秒在通过getTime()函数获取到的毫秒在转换成年月日结果不一样

HarmonyOS
10h前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
aquaa

获取到的date属于时间戳,在转化过程中,是转为国外的时间,与国内的时间会有所相差,比如月份。需要进行加减等一些操作。date转为时间的demo:

class Opt {
  yy: string = '';
  mm: string = '';
  dd: string = '';
  HH: string = '';
  MM: string = '';
  SS: string = '';
}
@Entry
@Component
struct TimePage {
  @State message: number = 1622422400000;
  formatDate(timestamp: number, format = 'yyyy-mm-dd') {
    let res = "";
    try {
      const date = new Date(timestamp);
      const opt: Opt = {
        yy: date.getFullYear().toString(),
        mm: (date.getMonth() + 1).toString(),
        dd: date.getDate().toString(),
        HH: date.getHours().toString(),
        MM: date.getMinutes().toString(),
        SS: date.getSeconds().toString(),
      };
      const regKeys: string[] = ['y+', 'm+', 'd+', 'H+', 'M+', 'S+'];
      for (let i = 0; i < regKeys.length; i++) {
        const regKey = regKeys[i];
        const reg = new RegExp(regKey);
        let ret = reg.exec(format);
        if (ret) {
          switch (regKey) {
            case 'y+':
              format = format.replace(reg, ret.length === 1 ? opt.yy : opt.yy.padStart(ret.length, "0"));
            case 'm+':
              format = format.replace(reg, ret.length === 1 ? opt.mm : opt.mm.padStart(ret.length, "0"));
            case 'd+':
              format = format.replace(reg, ret.length === 1 ? opt.dd : opt.dd.padStart(ret.length, "0"));
            case 'H+':
              format = format.replace(reg, ret.length === 1 ? opt.HH : opt.HH.padStart(ret.length, "0"));
            case 'M+':
              format = format.replace(reg, ret.length === 1 ? opt.MM : opt.MM.padStart(ret.length, "0"));
            case 'S+':
              format = format.replace(reg, ret.length === 1 ? opt.SS : opt.SS.padStart(ret.length, "0"));
          }
        }
      }
      res = format;
    } catch (error) {
      console.error("ERROR formatDate" + error);
    }
    return res;
  }
  build() {
    Row() {
      Column() {
        Text(this.formatDate(new Date(this.message).valueOf(),'yyyy/mm/dd HH:MM:SS')).fontSize(30)
      }
      .width('100%')
    }
    .height('100%')
  }
}

三方库dayjs参考文档:https://ohpm.openharmony.cn/#/cn/detail/dayjs

分享
微博
QQ
微信
回复
8h前
相关问题
Web组件获取高度不一样
2265浏览 • 1回复 待解决
new Date()获取月和时间错误。
1989浏览 • 1回复 待解决
鸿蒙和安卓有什么不一样
6448浏览 • 3回复 待解决
#鸿蒙通关秘籍#HSP和HAR有啥不一样
120浏览 • 1回复 待解决
json 如何转换成自定义业务对象
792浏览 • 1回复 待解决
如何获取当前年、月、
635浏览 • 1回复 待解决
Map类型怎么转换成Json string
2179浏览 • 1回复 待解决
HarmonyOS将对象转换成字符串方法
575浏览 • 1回复 待解决
如何base64转换成图片?
10312浏览 • 2回复 待解决