簡體   English   中英

片刻時區-無效日期

[英]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上提出這個問題。

並且dod相同,可以在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.

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