时刻时区-无效日期



在下面的代码段中,解析moment.tz('30 3 14:59', 'w d 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时,一切似乎都很好。所以我的建议是,当我们在GitHub中提出这个问题时,暂时使用do

dod相同,可以在文档中查看。这意味着两者返回同一天,但一个返回为number,另一个返回string

18:30之后,我在IST中发现了更多的实验,问题开始了。但原因对我来说真的不可理解。但可能是实时添加了时区值导致了错误。平均值如果我在IST,那么00:00 - 5:30与错误发生的时间相同。

所以更新后的代码应该如下:

var myTime1 = moment.tz('30 3 14:59', 'w d 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', 'w d 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>

最新更新