這裏有一個猜測,所以我可能是錯的。
的問題是,timesatmp您所指定的有一個0
偏移測試,以便它一樣UTC - 但在GMT時區以下DST時是不一樣的你的時間。
GMT與UTC相同,即偏移量爲0
。但是,您提到DST,並且在遵守夏令時的情況下,您的時鐘會向前移動1小時,您的UTC偏移也會向前移動1小時。所以你現在的時間,就UTC來說,實際上是UTC + 0100
。這就是多出一小時的地方。
它可能有助於首先將所有時間轉換爲UTC,畢竟,這就是它的目的,對嗎? 02:30 GMT
,而DST後面是01:30 UTC
。因此,與此相比,02:01 UTC
的測試時間戳在未來大約半小時 - 因此爲32 minutes from now
。
如果你期望看到30 minutes ago
相反,你的考試日期應當在爲了表達UTC時間戳,這是相當於02:01
時間由您的時鐘顯示已經2011-05-31T01:01:44+00:00
。
最安全的解決方案是始終使用UTC時間戳 - 這就是SO,Facebook和Twitter的日期。 UTC時間戳然後可以被明確地解釋併爲每個用戶的時區格式化。
然後,您的工作就是確保您使用的時間戳不僅僅是您在鐘面上看到的,而是UTC等效的時間戳 - 在您當前的時區中,UTC時間可能比時間顯示。根據你使用什麼來生成你的HTML,你應該能夠找到一個內置於語言/平臺或第三方庫的函數,它會給你顯示當前時間的UTC等值您的時區中的時鐘考慮DST。
您的權利,我已經將時間格式更改爲UTC,一切似乎都很好。但現在這意味着我將不得不發佈帖子,就好像它們在一小時前發佈一樣。 – Ian 2011-05-31 03:59:24
@Ian如果你一整年都這樣做,那會是不正確的 - 問題是你使用你的時鐘時間,但將它發佈爲UTC。您必須執行以下操作之一1)使用正確的偏移量 - 只要遵循DST,您的日期必須具有+01:00的偏移量。2)使用實際的UTC時間戳 - 這將是您的時間-01 :00。我會建議這樣做 - 如果你搬到不同的時區,它也會工作!這就是SO,Facebook和Twitter這樣的網站如何對他們的帖子進行約會 - 使用實際的UTC時間戳,這些時間戳是針對不同用戶的時區進行格式化的。 – 2011-05-31 04:05:36
@mu太短這肯定會很好 - 我從來沒有理解夏令時的需要! – 2011-05-31 04:20:38