本文原创发布在华为开发者社区

介绍

本示例展示了一个日期格式转化的Demo,其功能为将一个时间戳转换为当前的时间。

时间戳格式转换源码链接

效果预览

请添加链接描述

使用说明

输入要格式化的时间,组件会实时更新格式化后的时间。

实现思路

构造formatDate方法。

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) {
      hilog.error(0x0000, 'Index', "ERROR formatDate" + error);
    }
    return res;
  }

鸿蒙场景化代码
1 声望0 粉丝