javascript - 时刻时区 - 无效日期
问题描述
在下面的片段中,解析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
暂时使用。
并且与可以在文档do
中查看的相同。这意味着两者都在同一天返回,但一个作为另一个作为.d
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>
推荐阅读
- html - 将文本设置为在下拉列表中向左对齐?
- python - 条目未显示在 django 表中
- c++ - E447: 在路径中找不到文件“iostream”
- plotly - Plotly - yaxis 最小值和最大值未显示
- bootstrap-4 - 如何在引导程序 4 的工具提示中格式化双向文本?
- angular - 使用单 SPA 为子应用程序加载自定义字体的最佳方法是什么?
- python - DtypeWarning:列 (13) 具有混合类型
- css - 为全屏宽度 div 响应定位和缩放背景图像
- python - selenium.common.exceptions.ElementNotInteractableException:消息:元素无法滚动到使用 Selenium 与输入交互的视图中
- node.js - 帕格条件检查列表中的值