首页 > 其他分享 >时间格式化,显示昨天、今天

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

时间:2023-04-26 20:24:55浏览次数:52  
标签:10 00 格式化 format moment 昨天 今天 time const

时间格式化的需求:

  • 今天的数据显示“时分”,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插件

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");
  }
}

我是 甜点cc☭

公众号:【看见另一种可能】

标签:10,00,格式化,format,moment,昨天,今天,time,const
From: https://www.cnblogs.com/all-smile/p/17357152.html

相关文章

  • Golang - time包获取当前日期/时间戳并格式化输出
    获取时间对象packagemainimport("fmt""time")//24小时制constLAYOUT="2006-01-0215:04:05"//只能用这个日期,据说这是golang的诞生时间funcmain(){//获取当前日期now:=time.Now()fmt.Printf(now.Format(LAYOUT))//2022......
  • vscode代码保存自动格式化
    VSCode配置现在我们已经实现了ESLint和Prettier,我们可以利用一些便利的VSCode功能让它们自动运行。在项目的根目录中创建一个名为.vscode的目录和一个名为settings.json的文件。这将是一个覆盖已安装VS代码默认设置的值列表。我们想要将它们放在项目文件夹中的......
  • 不知道今天吃什么?今天吃什么 API 告诉你
    引言在现代社会,由于生活节奏加快和繁忙的工作日程,越来越多的人感到选择今天吃什么餐点是一项繁琐且令人困扰的任务。为了解决这个问题,许多人会求助于在线菜谱和美食博客等渠道,但是这些选项通常是繁琐和耗时的。幸运的是,今天吃什么API提供了一种简单而有效的方法,使人们能够轻松......
  • SpringMvc 数据格式化 & 数据校验
    数据格式化概述对属性对象的输入/输出进行格式化,从其本质上讲依然属于“类型转换”的范畴。Spring在格式化模块中定义了一个实现ConversionService接口的FormattingConversionService实现类,该实现类扩展了GenericConversionService,因此它既具有类型转换的功能,又具有格式......
  • 今天,”飞桨“六岁啦!
    时光荏苒,岁月不居。不经意间,飞桨PaddlePaddle公众号已成立六周年了。2190个日夜、52560个小时,感恩大家的一路相伴!周年之际,让我们一同回首走过的六年!回首过去过去六年,我们共发布了1595篇文章其中原创259篇总阅读量500万+总分享量24万+我们相聚于此,是因为这些话题将我们联系在一起。......
  • 如何做好今天的运维
    近年来很多声音讨论运维岗是不是会被替代的问题。但随着ChatGPT的出现和更多大模型的发布,似乎每个岗位都应该考虑下自己被替代的问题了。无论未来如何变化,现实是今天的我们仍然需要做好自己的工作,站好自己的岗。今天我将分享我所认为的优秀运维和架构师应该是怎样的。最后是关于运......
  • 历史上的今天大事件查询工具推荐 - 历史上的今天 API
    引言历史上的今天,总会有一些特别的事件发生,这些事件对人类的发展产生了深远的影响。想要了解这些事件,往往需要花费大量的时间和精力去查阅历史资料。但现在,有了历史上的今天API,一切变得方便了许多。如果你对历史感兴趣,那么历史上的今天API肯定是你不可错过的神器!这是一个可以......
  • ant design of vue的a-rang-picker时间控制既不能选今天以后的日期且开始时间跟结束时
    在项目中这个问题在困扰我,虽然我知道它是有一个Api是disableDate来控制时间的选择;但是只能够实现开始时间跟结束时间之间差不能超过3天。效果图接下来就是代码时间呀<a-col><a-form-model-itemlabel="任务时间范围"prop="priceRangeDate"><a-range-picker......
  • Java:LocalDateTime获取今天的开始时间和结束时间
    代码示例LocalDateTimenow=LocalDateTime.now();intyear=now.getYear();intmonth=now.getMonthValue();intday=now.getDayOfMonth();System.out.println(String.format("%d-%d-%d",year,month,day));//2023-4-21LocalDateTimestartTime=Loca......
  • EasyExcel格式化映射注解和样式注解详解
     https://blog.csdn.net/qq_44749491/article/details/127879946一、概述使用注解很简单,只要在对应的实体类上面加上注解即可。也就是说使用实体类模型来读写Excel文件时,可以通过注解来控制实体类字段和Excel列之间的对应关系。二、ExcelProperty2.1作用ExcelProperty注解用......