5

我正在尝试使用 moment.js 进行与 python timedelta 类似的计算。

我遇到的问题是:

var d = moment(0);
d
Moment {_i: 0, _f: undefined, _l: undefined, _isUTC: false, _d: Thu Jan 01 1970 02:00:00 GMT+0200 (EET)…}
_d: Thu Jan 01 1970 02:00:00 GMT+0200 (EET)
_f: undefined
_i: 0
_isUTC: false
_l: undefined
__proto__: Object
d.hours();
2
d.days();
4

我如何获得等于 unix 时间戳 0 的时刻时间戳,因为 moment(0) 似乎没有给我时刻,其中天、小时、秒和诸如此类的东西都是 0,并且转换为带有 moment.js 格式的 unix 时间戳 0 'X' (链接

回应评论:通常时间选择器为特定日期/天的选择时间工作。而timepicker 14:35 的值通常被解释为14小时35分钟。您可以使用相同的选择器让用户选择 PERIOD(或 timedelta)而不是 TIME。这意味着某事之间有 14 小时 35 分钟,或者某事需要这段时间……等等……

您可以使用 moment.js 来模拟该功能。因为:

moment(0).utc().hours == 0
moment(0).utc().minutes == 0
moment(0).utc().seconds == 0

您可以只添加(或让用户添加)小时、分钟、秒来选择时间而不是 PERIOD。或时间增量。不幸的是,当期限超过 24 小时时,这将失败。因为 moment(0).utc().days() 等于 4 而不是 0。

不知道为什么这个 WHY 是相关的,当出于所有原因我能想到 moment(0).utc().days() 应该是 0 而不是 4...

4

1 回答 1

3

我认为您在检测到您所在的时区时遇到了问题。如果您这样做

moment(0).toISOString() 

您应该看到所有天的 0 等。您可以通过执行类似的操作将时区设置为 UTC

var a = moment(0);
a.utc();
a.toString()

a.toString 现在应该显示为正确的时区。

另外,moment(0).utc().days()是“星期三”(或当前的任何一天)。

于 2013-11-11T15:15:20.543 回答