簡體   English   中英

使用Moment時區格式化指定時區中的日期

[英]Formatting date in specified timezone using Moment Timezone

如果您將時區更改為(UTC-07:00)山區時間並運行下面的代碼,則可以看到我正在談論的問題。

 var a = moment('2009-11-01T06:00:00Z').tz('US/Mountain').format(); var b = moment('2009-11-01T06:00:00Z').tz('US/Mountain').format('YYYY-MM-DD HH:mm'); var c = moment('2009-10-31T23:00:00-07:00').format('YYYY-MM-DD HH:mm'); document.getElementById("a").innerHTML = "#1: " + a; document.getElementById("b").innerHTML = "#2: " + b; document.getElementById("c").innerHTML = "#3: " + c; 
 <script src="http://momentjs.com/downloads/moment.min.js"></script> <script src="http://momentjs.com/downloads/moment-timezone-with-data-2010-2020.min.js"></script> <div id="a"></div> <div id="b"></div> <div id="c"></div> 

通過運行上面的代碼(#1)產生的日期偏移是正確的。 但是,是否不應該將其格式化將其值更改為“ 2009-11-31 03:00”(#3)而不是“ 2009-10-31 23:00”(#2)?

似乎格式化程序只是剝離偏移量,而不是在生成格式化日期時將其考慮在內。 這是一個錯誤還是我在這里做錯了什么?

您正在使用2009年的moment-timezone-with-data-2010-2020.min.js 。您應該將Moment Timezone更改為moment-timezone-with-data.min.js 查看工作代碼段:

 var a = moment('2009-11-01T06:00:00Z').tz('US/Mountain').format(); var b = moment('2009-11-01T06:00:00Z').tz('US/Mountain').format('YYYY-MM-DD HH:mm'); var c = moment('2009-10-31T23:00:00-07:00').format('YYYY-MM-DD HH:mm'); document.getElementById("a").innerHTML = "#1: " + a; document.getElementById("b").innerHTML = "#2: " + b; document.getElementById("c").innerHTML = "#3: " + c; 
 <script src="http://momentjs.com/downloads/moment.min.js"></script> <script src="http://momentjs.com/downloads/moment-timezone-with-data.min.js"></script> <div id="a"></div> <div id="b"></div> <div id="c"></div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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