javascript - 时刻时区 - 无效日期

标签 javascript momentjs

在下面的代码片段中,解析 moment.tz('30 3 14:59', 'w d HH:mm', 'America/Los_Angeles'); 工作正常但将 14:59 更改为15:00 到 23:59 之间的任何时间都会给出一个无效日期

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', '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>

关于javascript - 时刻时区 - 无效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51481035/

相关文章:

javascript - 使用 d3 在 svg 中引导下拉菜单

javascript - 如何从日历中的 moment.js 无限加载前一周?

javascript - moment.js 时间差显示错误结果

javascript - 元素如何仅在滚动时固定到页面顶部?

javascript - 当我读取本地文件时 Ajax 不工作

javascript - moment.js isBetween() 方法使用澳大利亚日期格式

node.js - 时区或位置与 UTC 的偏移量

javascript - moment.js diff 显示错误结果

javascript - 有没有办法列出网页的所有可用 css 类?

javascript - 在底部而不是顶部的滚动应用上添加事件类