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

阅读 765
1 个回答

获取到的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

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。