计算UTC中时刻js时间戳之间的时间间隔
问题描述:
我很难计算两个时间戳的持续时间(时间差)。 有一个时间戳我从服务器接收的格式如下:计算UTC中时刻js时间戳之间的时间间隔
start # => "2017-05-31 06:30:10 UTC"
(这基本上是RUBYS DateTime.now.utc
)
我希望看到从那时起直至截至目前有多少个小时已经过去了。 计算仅在angularjs前端发生。 我试过如下:
var start = moment("2017-05-31 06:30:10 UTC", "YYYY-MM-DD HH:mm:ss Z").utc();
var now = moment.utc();
var duration = moment.duration(now.diff(start));
console.log(duration.asHours()); #=> 2 hours even though the point in time was just a couple of minutes ago.
不幸的是,这将始终使用我的设备上的本地时间和生产时间,这是一个时间休息几个小时的实际时间。
所以我的方法是将所有时间都转换为UTC并让momentjs处理所有这些。
我错过了什么?
答
由于您输入的是UTC,因此您可以使用moment.utc
方法。
默认情况下,矩解析并显示在本地时间。
如果要分析或显示UTC的时刻,可以使用
moment.utc()
而不是moment()
。
这里一个活生生的例子:
var start = moment.utc("2017-05-31 06:30:10 UTC", "YYYY-MM-DD HH:mm:ss Z");
var now = moment.utc();
var duration = moment.duration(now.diff(start));
console.log(duration.asHours());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
在您的代码示例,您解析输入字符串作为当地的日期,然后将其转换为UTC(与utc()
法)。
查看Local vs UTC vs Offset指南获取更多信息。
非常感谢! 我把你引用的文档理解为“可选地,你也可以这样写”。显然我错了,p –