[英]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.