2014-12-02 24 views
1

我正在開發一個應用程序,可以讓用戶在其他時區的日期/事件,所以我需要轉換像保留時間,但轉換成另一種時區

2014-12-01T19:00:00.000Z任何特定時區如「美國/鳳凰」。

我用時間來處理它:

moment.tz(dt, 'America/New_York').format(); 

此輸出:2014-12-01T14:00:00-05:00這不是我想要的。

所有我想要做的就是更改時區,而不是時間,使得它會成爲2014-12-01T19:00:00-05:00

也許我可以添加5(根據區域的偏移量)之前我轉換時區,所以它會保持同一時間?也許有更好的方法?

謝謝,詹姆斯

回答

0

您可以使用瞬間的方法,如:

示例:

moment.tz(dt, 'America/New_York').startOf('day').hour(dt.get('hour')).minute(dt.get('minutes')).format() 

這將打印與dt變量相同的小時和分鐘。

希望它可以幫助

+0

當然,但它會失去精度,它實際上可能會在不同的日曆日期結束。 – 2014-12-02 19:27:24

1

你應該認識到,在你的字符串Z意味着時間戳應該被解釋爲UTC。因此,如果您在不調整時間的情況下將其更改爲不同的偏移量,則實際上您正在選擇不同的時間。通常情況下,這不是正確的做法。

通過調整時間以匹配時區的偏移量,Moment正在做正確的事情。它將輸入字符串解釋爲UTC,然後將其調整爲提供的時區。

這聽起來像你想忽略Z和治療時間,如果它在一個特定的時間段是已經。最好的地方,改變這將是最初生成字符串的任何地方。如果它不是UTC,則不應該把Z放在第一位。

但是,您一定可以在JavaScript中剝離它並獲得您要求的結果。

var s = "2014-12-01T19:00:00.000Z"; 

moment.tz(s.replace(/Z$/,''), 'America/New_York').format(); 
相關問題