當我檢測到一個奇怪的行爲時,所有問題開始:我有一個很長的數字,意思是「自0001/01/01以來的毫秒數」,然後在C#日期時間使用AddMilliseconds
得到一個不同的日期值,即一個小時內返回的日期值。例如。處理日期時的時刻日期問題
new DateTime().AddMilliseconds(63613091700000); => {10/26/2016 3:15:00 PM}
moment([1]).add(63613091700000).toDate() => Wed Oct 26 2016 16:15:00 GMT-0400 (Eastern Daylight Time)
在C#中獲得15:15h,並在當下16:15 !!!
那吹我的腦海裏,所以我搜索了錯誤,我發現它:
moment([1]).toDate() => Mon Jan 01 1 00:00:00 GMT-0500 (Eastern Standard Time)
的問題是,當我創建一個自定義的日期(moment([1])
)目前它使用GMT-0500 (Eastern Standard Time)
但申請時當時add
方法返回GMT-0400 (Eastern Daylight Time)
!另請檢查通過moment()
創建時間日期還是使用javascript日期new Date()
也使用GMT-0400 (Eastern Daylight Time)
。這就是問題所在。
我的問題是,爲什麼會發生這種情況?這是一個問題嗎?
發生這種情況是因爲那是您在運行JavaScript的系統上設置的時區。此外,回到耶穌出生時,似乎是一個奇怪的事情,通常JavaScript從1970年開始計算,而不是0001. – adeneo
存儲和操縱UTC中的所有日期。使用用戶的本地時區/ DST設置對使用用戶界面進行日期時間處理的最後一件事情是使用用戶的本地時區/ DST設置進行格式化,從UI接收日期時間後使用日期時間進行的第一件事是將其轉換爲UTC。 –
@adeneo很確定耶穌不是在0001/12/25之前出生的。充足的時間。 –