使用Moment实现日期格式化 判断给定日期是今日/明日还是其他日期
Moment.js 判断日期所属分类的实现方案
使用前请确保项目中已经正确引入Moment.js库,npm安装或者CDN引入均可。
实现思路
利用Moment内置的日期比较方法,按天粒度对齐待判断日期、今日、明日的时间,避免时分秒对判断结果的干扰,不需要手动处理跨月、跨年等边界场景。
实现步骤
- 将待判断的日期变量
day转为Moment实例,调用startOf('day')对齐到当天0点 - 生成今日的Moment实例,同样对齐到当天0点
- 生成明日的Moment实例,给今日日期加1天即可
- 用
isSame()方法指定按天粒度比较,返回对应分类
可直接复用代码
// 入参支持时间戳、Date对象、常规日期字符串等格式 function getDateType(day) { const targetDate = moment(day).startOf('day') const today = moment().startOf('day') const tomorrow = moment().add(1, 'days').startOf('day') if (targetDate.isSame(today, 'day')) { return '今天' } if (targetDate.isSame(tomorrow, 'day')) { return '明天' } return '其他日期' }
注意事项
如果你传入的是自定义格式的日期,可在初始化Moment时指定格式,比如
moment(day, 'MM/DD/YYYY')即可正确识别05/20/2024这类格式的日期;涉及多时区场景需要配合moment-timezone库先做时区对齐,避免时差导致判断错误。
测试示例
- 传入当日Date对象:
getDateType(new Date())输出 今天 - 传入次日时间戳:
getDateType(Date.now() + 86400000)输出 明天 - 传入3天后的日期:
getDateType(moment().add(3, 'days'))输出 其他日期
内容的提问来源于stack exchange,提问作者Sosauls
相关产品推荐
相关产品推荐

