【问题标题】:Why does Moment.js day ends at 22:59:59.999Z?为什么 Moment.js 一天在 22:59:59.999Z 结束?
【发布时间】:2017-11-02 07:05:27
【问题描述】:

当使用Moment.js获取一天的end of时,返回22:59:59.999Z:

moment('2013-W06-5').endOf('day') // 2013-02-08T22:59:59.999Z

http://plnkr.co/edit/nS6o5F

谁能解释一下为什么一天没有在 23:59:59.999Z 结束?

我不认为 Moment.js 处理错了。也许是关于夏令时(德语写作)?

【问题讨论】:

  • 来自文档,endOf 将时刻设置为23:59:59.999,我认为这不是错误,可能是您的代码中的某些问题,您需要分享它以便我们进一步帮助您.
  • 我也不认为它是一个错误。将源代码和指向 Plunker 的链接添加到原始帖子。
  • 问题在于您在角度视图中显示值的方式。在控制器中使用 format() 将矩对象转换为字符串,或者在视图中使用 angular-moment

标签: javascript time timestamp momentjs


【解决方案1】:

endOf 可以识别时区。

使用 .utc() 你会得到你需要的:

$scope.output = moment('2013-W06-5').utc().endOf('day');
=> "2013-02-08T23:59:59.999Z"

http://plnkr.co/edit/BgcBpRmldQL7po4W4vFv?p=preview

【讨论】:

  • OP 询问为什么它不显示 23。答案确实是默认情况下,时刻解析并显示在本地时间。所以对我来说,22:59:59.999Z 显示为 06:59:59.999Z。
  • 您会使用 format() 或 angular-moment 发布一个可以显示 OP 其他替代方案的答案吗?
  • 这个答案很完美。问题与 Angular 无关——我只是在 Plunker 中使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-04
  • 2023-03-28
  • 2022-11-18
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多