javascript - 2016 年 8 月 24 日 12 :44 AM Not valid in Safari on Mac

标签 javascript date safari cross-browser

我已经做了很多工作来确保我的日期选择器创建的日期能够兼容转换为 JavaScript 日期对象。我遵循了有关此堆栈溢出条目的建议:Invalid date in safari并使用以下方法从字符串中删除破折号: new Date('2016 年 8 月 24 日 12:44 AM'.replace(/-/g, "/"));这使得它与除 Mac 上的浏览​​器之外的所有其他操作系统和浏览器兼容。 Safari 似乎仍然不喜欢字符串中的完整月份名称。如果我被迫使用该格式,建议使用什么方法让 safari 将字符串识别为日期?

最佳答案

阅读有关 Date() 的文档:

new Date(dateString)

String value representing a date. The string should be in a format recognized by the Date.parse() method (IETF-compliant RFC 2822 timestamps and also a version of ISO8601).

另请注意以下几点,这意味着您在执行此操作时必须格外小心。

Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies.

请参阅 Date.parse 的文档其中明确指出接受哪些日期格式:

A string representing an RFC2822 or ISO 8601 date (other formats may be used, but results may be unexpected).

您尝试解析的格式均不受支持,并且您必须期望不同浏览器中的不同行为。

就我个人而言,我总是使用 ISO 8601 格式的日期(例如 2016-06-16T06:15:24.040Z)。使用这样的标准还支持添加时区,这在多时区应用程序中至关重要。

哦,顺便说一句:将本地化日期字符串添加到 JavaScript 方法通常是一个坏主意。用户的浏览器可能使用英语以外的其他语言,除了奇怪的日期格式之外,还可能导致进一步的问题。

关于javascript - 2016 年 8 月 24 日 12 :44 AM Not valid in Safari on Mac,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37851143/

相关文章:

javascript - 如何使搜索按钮按 <p> 名称过滤图库图像

r - 为实验当天创建变量

javascript - PHP : Date range selection automatically

html - SVG 文本线性渐变剪切文本 [Safari]

jquery - Safari 在可滚动的 div 内容上对 Angular 滑动时卡住

asp.net - Chrome 和 Safari 中元素符号列表菜单的 CSS 渲染

javascript - AngularJS:一个接一个地监听事件

javascript - 实时事件轮询

javascript - 在具有重叠 "circle"div 的点击处理程序中获取错误元素

javascript - 用 1 行代码在 Javascript 中显示实时日期 + 时间