繁体   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