momentjs日期与时区的比较

时间:2017-09-27 10:42:39

标签: javascript timezone momentjs

我一直在使用momentjs和moment-timezone。今天使用isAfter方法进行日期比较时,我发现了一些奇怪的行为。

假设一个时刻日期配置了时区值,而其他时刻不是,那么日期比较的行为应该是什么?

在我的情况下,我们将一个纪元时间转换为一个日期的特定时区值。其他日期格式为yyyy-mm-dd,没有任何时区值。当我比较这两天时,它失去了同一天的价值。

//Wed Sep 27 2017 01:13:04 GMT-0700
var localtime = moment(1506499984924).tz("America/Los_Angeles");

//Wed Sep 27 2017 00:00:00
var date = moment('2017-09-27');

//returns true
var value = localtime.isAfter(date, 'day');

理想情况下,因为两个日期都是2017年9月27日,所以它应该返回false。 使用diff方法而不是isAfter返回0,这是真的。

感谢任何帮助解决此问题。

我使用此代码创建了一支笔:Moment

1 个答案:

答案 0 :(得分:2)

在您的代码中:

false

这会在午夜当地时间创建一个值。与特定时刻的关系在很大程度上取决于您的计算机设置的当地时区。

Moment对象总是作为时刻进行比较 - 即基于UTC的瞬时值。

我在运行您的代码笔时看到true因为我处于后面 UTC的时区。如果您看到android:paddingBottom="20pt" ,那就是因为您处于UTC的提前的本地时区(超过一个小时,给定其他值的时间)。< / p>