前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >时间格式化,显示昨天、今天

时间格式化,显示昨天、今天

作者头像
甜点cc
发布2023-05-01 16:14:38
1K0
发布2023-05-01 16:14:38
举报

时间格式化的需求:

  • 今天的数据显示“时分”,HH:mm 10:00
  • 昨天的数据显示“昨天 时分”, 昨天 10:00
  • 今年的数据,显示 “月日 时分”, 05-01 10:00
  • 不是今年的数据,显示“年月日 时分”, 2022-05-01 10:00

代码展示

在 ios中 用new Date("2022-05-01 10:00").getTime()会有兼容性问题,跟日期格式的连字符有关系,这里使用moment插件

代码语言:javascript
复制
const moment = require("moment");

// 判断日期是不是今天、昨天, 0:今天 -1:昨天 1-明天
// str: 2023-02-07 14:09:27.0
export function isWhichDay(str) {
  const date = new Date();
  const that = moment(moment(str).format("YYYY-MM-DD")).valueOf();
  const today = moment(moment(date).format("YYYY-MM-DD")).valueOf();
  const timeStampDiff = that - today;
  const obj = {
    "-86400000": "-1",
    0: "0",
    86400000: "1",
  };
  return obj[timeStampDiff] || null;
}

// 判断是不是当年
export function isCurYear(str) {
  return moment().format("YYYY") === moment(str).format("YYYY");
}

/**
 * 格式化时间 YYYY-MM-DD HH:mm:ss
 * 1、当天时间显示如 10:00
 * 2、昨天显示如 昨天10:00
 * 3、昨天之前且当年的,显示如,05-01 10:00
 * 4、昨天之前且跨年的,显示如, 2022-05-01 10:00
 * @param {string} time  "2022-05-01 10:00:01.0"
 * @returns {string}
 */
export function formatTime(time) {
  const t = isWhichDay(time);
  if (t === "0") {
    return moment(time).format("HH:mm");
  } else if (t === "-1") {
    return `昨天 ${moment(time).format("HH:mm")}`;
  } else if (
    isCurYear(time) &&
    moment(time).valueOf() < moment(new Date()).valueOf()
  ) {
    return moment(time).format("MM-DD HH:mm");
  } else {
    return moment(time).format("YYYY-MM-DD HH:mm");
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 时间格式化的需求:
    • 代码展示
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档