为什么
moment('2019-01-01T23:00:00+00:00').startOf('day')
返回
"2019-01-02T00:00:00.000"
又如何从等式中完全删除时间,以使它返回精确的日期而不四舍五入?
答案 0 :(得分:1)
这取决于您的时区。
moment('2019-01-01T23:00:00+00:00')
为您提供了时区中的时刻对象。例如,如果您位于GMT + 2区域,则格式如下:
2019-01-02T01:00:00 + 02:00
如果对该时刻对象使用startOf(day)
函数,结果将是:
2019-01-02T00:00:00.000
要解决此问题,如果要处理UTC时区,只需使用utc()
函数。
moment.utc('2019-01-01T23:00:00+00:00')
此功能的格式类似于(取决于您的本地):
2019-01-01T23:00:00Z
上述日期的开始日期为您提供
2019-01-01T00:00:00Z
为了删除时间部分,请在format()
中使用您自己的格式:
moment.utc('2019-01-01T23:00:00+00:00').startOf('day').format('YYYY-MM-DD')
let myLocalDate = moment('2019-01-01T23:00:00+00:00');
console.log('Date in your timezone:', myLocalDate.format());
console.log('Start of date in your timezone:', myLocalDate.startOf('day').format());
console.log('---');
let myUtcDate = moment.utc('2019-01-01T23:00:00+00:00');
console.log('Date in UTC:', myUtcDate.format());
console.log('Start of date in UTC:', myUtcDate.startOf('day').format());
console.log('---');
console.log('Only date part:', myUtcDate.startOf('day').format('YYYY-MM-DD'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>