[英]How can I change the timezone of a date without changing it's content?
我們正在與另一家構建后台的公司合作,他們以這種格式保存日期:
“2020-12-12T12:00:00.0000Z”
問題是,當我們創建一個傳遞該日期的日期 object 時,它會增加 2 小時(就像我們在 GMT+2 中一樣),因此當我們嘗試與當前日期進行比較時,它永遠不會相同。
所以我們需要將該日期轉換為 GMT+2,以便我們可以比較日期,但不修改它最初顯示的日期。
...它增加了2個小時...
不,它沒有。 它為您提供了一個代表字符串定義時間的Date
。 該字符串具有Z
后綴,表示它以 GMT/UTC 表示。 如果你解析它,結果是一個代表那個時刻的Date
object。 在您的時區中,時區敏感函數( getHours
、 getMinutes
、 toString
)將使用您的時區來提供適當的值。 UTC 函數( getUTCHours
、 getUTCMinutes
、 toUTCString
)將使用 UTC (GMT)。
如果后端向您發送該字符串並且它不是UTC 格式,那么后端向您發送的字符串不正確。
如果您想忽略字符串上的時區指示符並將其作為當地時間進行解析,最好的辦法是將其分成幾部分並使用new Date(year, month, day)
構造函數。 但是,您也可以只刪除Z
,因為規范說沒有時區指示符的日期/時間 forms 是在本地時間解析的(而 date-only 是 UTC)。 不過,規范對此有所調整,這就是為什么我建議改用new Date(year, month, day)
構造函數。
嘗試為此添加時刻npm install moment-timezone --save
在你的代碼中
var a = moment.tz("2020-12-12T12:00:00.0000Z", "Asia/Taipei");
a.format(); // 2020-12-12T12:55:00+08:00
例如,您所在的區域 = 亞洲/台北
希望有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.