谁能给我解释一下为什么moment("2013-04-22 00:00:00+07:00").date()返回21
例如,moment("2013-04-22 00:00:00+02:00").date()返回22。
我希望在不考虑构建moment对象的字符串中的任何时区信息的情况下获得日期,即在此特定示例中始终为22。
发布于 2015-05-19 20:40:34
我想我已经弄明白了:moment("iso8601_string")将该字符串解析/转换为本地时间。在我的例子中,我处于UTC+2时区,所以解析包含"+02:00" (或"+01:00")的字符串,然后调用.date()返回22,因为moment对象中存储的时间与我的本地时间匹配。
但是,当使用"+07:00"解析字符串时,moment对象中存储的时间将是我的本地时间,在这种情况下,日期实际上与前一天不同。
我认为我最初的需求也是令人费解的,并且基于一个不正确的假设。我的用例是,我从某个UI小部件获得的datetime总是作为date+time,但我只需要日期。编写单元测试来解析包含"+07:00"的字符串会导致日期“不正确”。然而,这是一个错误的假设,因为(至少在我的用例中)来自UI小部件的datetime将始终是本地时间,因此代码永远不会解析包含"+07:00"的字符串。
我不确定我最初所说的用例是否存在于现实世界中:
我猜通常无论何时从远程获取日期,约定总是获取UTC,这样参考点就明确了,您可以在本地进一步转换它。因此,当您在随机时区中获取日期并需要该时区中的日期时,这种情况可能并不常见。尽管如此,作为一个学术问题,我不知道在这种情况下我如何能够从中获得日期:)
https://stackoverflow.com/questions/30324981
复制相似问题