瞬间开始每天到第二天

时间:2019-07-17 07:19:31

标签: momentjs

为什么

moment('2019-01-01T23:00:00+00:00').startOf('day')

返回

"2019-01-02T00:00:00.000"

又如何从等式中完全删除时间,以使它返回精确的日期而不四舍五入?

1 个答案:

答案 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>