HarmonyOS 鸿蒙Next 日期格式化问题

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 日期格式化问题

鸿蒙没有类似SimpleDateFormat的日期格式化处理吗,想把 yyyy-MM-dd HH:mm:ss 转换成 yyyy.MM.dd 格式,有便捷的转换吗

7 回复
function convertDateFormat(dateStr: string): string {
  const date = new Date(dateStr);

  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的,所以要加1
  const day = String(date.getDate()).padStart(2, '0');

  return `${year}.${month}.${day}`;
}
@Entry
@Component
struct Page30 {

  build() {
    Column() {
      Button('测试').onClick(()=>{
        // 使用示例
        const originalFormat = "2024-07-16 15:30:45";
        const convertedFormat = convertDateFormat(originalFormat);
        console.log(convertedFormat); // 输出 "2024.07.16"
      })
    }
    .height('100%')
    .width('100%')
  }
}

不想自己写,可以使用第三方eftool,工具类DateUtil

参考:https://ohpm.openharmony.cn/#/cn/detail/[@yunkss](/user/yunkss)%2Feftool 

没有Format直接转格式是嘛,鸿蒙这基础的功能都不补一个

没有,鸿蒙依托于javascript,而javascript的new Date()本身就提供了日期的格式化功能,只是用起来没SimpleDateFormat那么直观,需要在自己按需求简单封装一下。我觉得常用的功能已经够了。

 function formatDate(fmt, date) {
    let ret;
    let opt = {
        'Y+': date.getFullYear().toString(),
        'M+': (date.getMonth() + 1).toString(), // 月份
        'D+': date.getDate().toString(), // 日
        'H+': date.getHours().toString(), // 小时
        'm+': date.getMinutes().toString(), // 分
        's+': date.getSeconds().toString(),
    };
    for (let k in opt) {
        ret = new RegExp('(' + k + ')').exec(fmt);
        if (ret) {
            fmt = fmt.replace(
                ret[1],
                ret[1].length == 1
                    ? opt[k]
                    : opt[k].padStart(ret[1].length, '0')
            );
        }
    }
    return fmt;
}

针对HarmonyOS 鸿蒙Next 日期格式化问题,以下是一些专业的解答:

在HarmonyOS中,日期格式化通常使用DateTimeFormat类,该类允许开发者根据用户所在区域的语言和文化习惯选择合适的日期和时间样式。例如,要格式化一个日期为完整的中文日期格式(包括年、月、日、星期),可以使用以下代码:

import { intl } from '@kit.LocalizationKit';
let date = new Date();
let dateFormat = new intl.DateTimeFormat('zh-Hans', { dateStyle: 'full' });
let formattedDate = dateFormat.format(date);

如果你需要将日期格式化为特定的字符串格式(如“YYYY-MM-DD”),则可能需要使用第三方日期处理库,如Day.js。Day.js提供了简单的API来格式化和解析日期,例如:

import dayjs from "dayjs";
let formattedDate = dayjs().format("YYYY-MM-DD");

此外,HarmonyOS也支持使用java.time包下的类来进行日期格式化,这与Java SE 8及以上版本中的处理方式类似。例如:

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

LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = now.format(formatter);

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部