我一直在使用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
答案 0 :(得分:2)
在您的代码中:
false
这会在午夜当地时间创建一个值。与特定时刻的关系在很大程度上取决于您的计算机设置的当地时区。
Moment对象总是作为时刻进行比较 - 即基于UTC的瞬时值。
我在运行您的代码笔时看到true
因为我处于后面 UTC的时区。如果您看到android:paddingBottom="20pt"
,那就是因为您处于UTC的提前的本地时区(超过一个小时,给定其他值的时间)。< / p>