[英]Moment Timezone - Invalid Date
在下面的代碼段中,分析moment.tz('30 3 14:59', 'wd HH:mm', 'America/Los_Angeles');
可以正常工作,但是將14:59更改為15:00到23:59之間的任何值都將導致Invalid date
。
var validTime = moment.tz('30 3 14:59', 'w d HH:mm', 'America/Los_Angeles');
console.log(validTime.format()); // 2018-07-25T14:59:00-07:00
var invalidTime = moment.tz('30 3 15:00', 'w d HH:mm', 'America/Los_Angeles');
console.log(invalidTime.format()); // Invalid date
https://jsfiddle.net/084e2k91/26/
這里有什么問題?
這真的很有趣,因為我也遇到同樣的問題,我認為這是moment.js
的錯誤,它沒有轉換其他時區的日期。 但是,當您嘗試使用do
一切似乎都很好。 所以我的建議是暫時讓do
,而我們在GitHub上提出這個問題。
並且do
與d
相同,可以在docs中檢查。 這意味着兩者都在同一天返回,但一個返回一個number
另一個返回為string
。
在18:30之后,我在IST中進行了更多實驗,問題開始了。 但是原因對我來說真的是無法理解的。 但是可能的原因是將時區值添加到實時中導致了錯誤。 意思是如果我在IST中,那么從發生錯誤開始的時間是00:00 - 5:30
。
因此,更新后的代碼應如下所示:
var myTime1 = moment.tz('30 3 14:59', 'wd HH:mm', 'America/Los_Angeles'); console.log(myTime1.format()); var myTime = moment.tz('30 3rd 14:59', 'w do HH:mm', 'America/Los_Angeles'); console.log(myTime.format()); //In IST the problem is starting from 18:30 var myTime1 = moment.tz('30 3 19:30', 'wd HH:mm', 'America/Los_Angeles'); console.log(myTime1.format()); var myTime1 = moment.tz('30 3rd 19:30', 'w do HH:mm', 'America/Los_Angeles'); console.log(myTime1.format());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.21/moment-timezone-with-data-2012-2022.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.