有人可以解释一下moment("2013-04-22 00:00:00+07:00").date()
返回21
的原因吗?
例如moment("2013-04-22 00:00:00+02:00").date()
返回22
。
我有兴趣获取日期而不考虑构建时刻对象的字符串中的任何时区信息,即在此特定示例中始终为22。
答案 0 :(得分:0)
我想我想出来了:moment("iso8601_string")
将该字符串解析/转换为本地时间。在我的情况下,我在UTC + 2时区,因此解析包含"+02:00"
(或"+01:00"
)然后调用.date()
的字符串会返回22,因为此时存储的时间对象匹配当地时间。
然而,在使用例如解析字符串时"+07:00"
,存储在时刻对象中的时间将是我当地时间,在这种情况下,日期实际上会在前一天不同。
我认为我的原始要求也是错综复杂的,并且基于不正确的假设。我的用例是我从一些UI小部件获取日期时间总是作为日期+时间,但我只需要日期。编写解析包含"+07:00"
的字符串的单元测试会导致日期为"不正确"。然而,这是一个不正确的假设,因为(至少在我的用例中)来自UI小部件的日期时间将始终在本地时间,因此代码不会解析包含"+07:00"
的字符串。 / p>
我不确定我最初声明的用例确实存在于现实世界中:
我猜通常每当从远程约会处得到一个日期时总是得到UTC,这样就可以明确参考点,你可以在本地进一步转换它。因此,当您在随机时区获得日期并且需要在该时区中的日期时,情况可能并不常见。尽管如此,作为一个学术问题,在这种情况下,我不知道如何能够从中获取日期:)