如果日期时间位于不同的时区,日期时间比较应如何进行。
例如:
WITH datetime("2022-11-01T08:00+01:00") AS d1, datetime("2022-11-01T07:00") AS d2
RETURN d1=d2
返回false!
我在OSX下使用的是4.4.12社区版。
更奇怪的是下面的话:
WITH datetime("2022-11-01T08:00:00+01:00") AS d1, datetime("2022-11-01T07:00") AS d2
RETURN duration.between(d1,d2)
结果:PT0S
WITH datetime("2022-11-01T08:00:00+01:00") AS d1, datetime("2022-11-01T07:00") AS d2
RETURN d1.year, d2.year, d1.month, d2.month, d1.day, d2.day, d1.hour, d2.hour, d1.minute, d2.minute, d1.second, d2.second, d1.millisecond, d2.millisecond, d1.timeZone, d2.timeZone, d1.offset, d2.offset, d1.epochMillis, d2.epochMillis
d1和d2的小时、偏移和时区不同。
2条答案
按热度按时间wqlqzqxt1#
Charchit的答案是最快的比较方法。或者,你也可以使用持续时间函数来比较秒数的差异,如下所示。
将返回
djp7away2#
你正在比较两个
Datetime
对象,它们的属性不同,这样做是行不通的。你可以简单地比较两个对象的epochMillis
,来比较两个日期时间是否相等,而不管时区如何:如果在同一时间、同一时区比较两个
datetime
示例,则比较结果如预期一样:因此,您看到的行为是正确的,因为要比较复合对象,您需要比较其中的所有键-值对。