如何将某个时间转换成距现在的时间

如何将某个时间转换成距现在的时间,比如一分钟之内就显示“刚刚”,一小时内就显示“xx分钟前”,一天内就显示“xx小时前”,昨天就显示“昨天”,其他时间显示具体的年月日

HarmonyOS
2024-07-05 17:49:36
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
单花红丝线
export function formatRelativeTime(datestr: string) {
  let date = new Date(datestr)
  const now = new Date();
  const seconds = (now.getTime() - date.getTime()) / 1000;

  if (seconds < 60) {
    return '刚刚';
  } else if (seconds < 60 * 60) {
    return Math.round(seconds / 60) + '分钟前';
  } else if (seconds < 60 * 60 * 24) {
    return Math.round(seconds / (60 * 60)) + "小时前";
    // return '今天';
  } else if (seconds < 60 * 60 * 24 * 2) {
    return "昨天"
  } else {
    // 超过一年的简化表示
    return formatISODateToYYYYMMDD(datestr);
  }
}

export function formatISODateToYYYYMMDD(isoDateString: string): string {
  if (isoDateString) {
    // 解析 ISO 格式的日期时间字符串为 Date 对象
    const date = new Date(isoDateString);

    // 从 Date 对象中提取年月日信息
    const year = date.getUTCFullYear();
    const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // 月份从 0 开始,所以加 1,并使用 padStart 确保为两位数
    const day = String(date.getUTCDate()).padStart(2, '0'); // 使用 padStart 确保为两位数


    if (new Date().getFullYear() === year) {
      //今年
      return `${month}月${day}日`;
    }
    return `${year}年${month}月${day}日`;

  }
  return ""

}
分享
微博
QQ
微信
回复
2024-07-06 10:44:49
相关问题
如何将文件转换成字符串
409浏览 • 1回复 待解决
如何将时间转换为日期格式时间
3130浏览 • 1回复 待解决
请问如何将openblock文件转换成exe文件
2344浏览 • 0回复 待解决
HarmonyOS 如何将时间进行格式化?
310浏览 • 1回复 待解决
Map类型怎么转换成Json string
2179浏览 • 1回复 待解决
如何base64转换成图片?
10314浏览 • 2回复 待解决
json 如何转换成自定义业务类对象
792浏览 • 1回复 待解决
HarmonyOS将对象转换成字符串方法
575浏览 • 1回复 待解决
HarmonyOS 转换时间方法
604浏览 • 1回复 待解决
HarmonyOS如何将Component转换PixelMap?
388浏览 • 1回复 待解决
如何获取系统时间戳以及格式转换
1939浏览 • 1回复 待解决
PixelMap类型怎么转换成Base64字符串
629浏览 • 1回复 待解决
如何获取当前系统时间时间
915浏览 • 1回复 待解决