如何用Moment.js更优获取ISO 8601格式的当前日期?
关于Moment.js获取ISO 8601格式当前日期的最优实现
首先要明确:moment().toISOString().substring(0, 10)这个写法有隐藏问题——toISOString()返回的是UTC时区的ISO字符串,如果本地时间接近午夜,UTC日期可能和本地日期不一致,导致结果出错。比如本地时间是2024-05-20 23:40,UTC时间已经是2024-05-21 03:40,这时截出来的日期就会是2024-05-21,和实际本地日期不符。
回到你的需求,获取ISO 8601格式的日期(YYYY-MM-DD),最优的写法就是你一开始用的moment().format('YYYY-MM-DD'):
moment().format('YYYY-MM-DD')
这个写法直接输出本地时区的标准ISO日期格式,语义清晰,没有时区隐患,而且Moment.js的格式化规则就是为这类场景设计的,完全不需要额外的字符串截取操作。
如果你的需求是获取UTC时区的ISO日期,只需要加上.utc()即可:
moment.utc().format('YYYY-MM-DD')
内容的提问来源于stack exchange,提问作者Jon Snow
相关产品推荐
相关产品推荐

