簡體   English   中英

如何在不更改日期內容的情況下更改日期的時區?

[英]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。 在您的時區中,時區敏感函數( getHoursgetMinutestoString )將使用您的時區來提供適當的值。 UTC 函數( getUTCHoursgetUTCMinutestoUTCString )將使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM