請問誰能解釋一下爲什麼moment("2013-04-22 00:00:00+07:00").date()
返回21
?MomentJS .date()問題
例如moment("2013-04-22 00:00:00+02:00").date()
返回22
。
我希望獲得日期而不考慮時間對象所在的字符串中的任何時區信息,即在此特定示例中始終爲22。
請問誰能解釋一下爲什麼moment("2013-04-22 00:00:00+07:00").date()
返回21
?MomentJS .date()問題
例如moment("2013-04-22 00:00:00+02:00").date()
返回22
。
我希望獲得日期而不考慮時間對象所在的字符串中的任何時區信息,即在此特定示例中始終爲22。
我想我想通了:moment("iso8601_string")
解析/將該字符串轉換爲本地時間。在我的情況下,我處於UTC + 2時區,因此解析包含"+02:00"
(或"+01:00"
)的字符串,然後調用.date()
會返回22,因爲存儲在時刻對象中的時間與我的本地時間相匹配。
但是,當用例如"+07:00"
,存儲在當前對象中的時間將是我當地的時間,在這種情況下,日期實際上會在前一天不同。
我想我的原始要求也是錯綜複雜的,並且基於不正確的假設。我的用例是我從某個UI小部件獲取日期時間始終爲日期+時間,但我只需要日期。編寫一個單元測試,解析包含"+07:00"
的字符串導致日期「不正確」。然而這是一個不正確的假設,因爲(至少在我的用例中)UI小部件的日期時間總是在當地時間,所以代碼永遠不會解析包含"+07:00"
的字符串。
我不知道,當我最初說用例在現實世界中確實存在:
我想一般只要從遠程某處公約得到一個日期是始終得到UTC,這樣的參考點是明確的,你可以在本地進一步轉換。因此,當您在隨機時區中獲得日期並且需要日期時間的情況下,在該時區中,情況可能不常見。儘管如此,作爲一個學術問題,我不知道如何在這種情況下能夠得到它的日期:)
使用'parseZone'創建一個矩形對象,它保留在給定的時區中,並且不會轉換爲當地時間:'moment.parseZone(「2013-04-22 00:00:00 + 07:00」)。 get(「date」)' – janfoeh
好的,謝謝!在我的情況下不會將它用作冗餘,但可能對某些人有用。 –
您是否正在使用舊版本?我只測試了這兩個字符串,兩者的回報都是21。 – chazsolo
[Moment.js]可能的重複日期](http://stackoverflow.com/questions/28612525/moment-js-round-dates-up) – janfoeh
我想我想通了,chazsolo看到我的答案爲什麼這個在你的情況下返回21。 –