【问题标题】:Moment failing on some dates某些日期的时刻失败
【发布时间】:2015-08-06 22:36:23
【问题描述】:

这是我的日期,对我来说没有什么不同。然而,一时无法处理所有这些:

console.info(details.date);
console.info(moment(details.date).format());
console.info('________________________________________');
result.date = moment(details.date, "DD-MM-YYYY H:m").format();

//Console
________________________________________
16/10/10 15:00
Invalid date
________________________________________
09/10/10 15:00
2010-09-10T15:00:00+01:00

如何确保约会安全。

【问题讨论】:

  • 正在将其解析为 mm/dd/yy(美式风格),因为 16/10/10 是无效日期。
  • 啊......谁他妈的用美国日期!啊! ;) 很可能就是这样 :)
  • Ummm 来自文档“默认情况下,Moment.js 带有英语语言环境字符串。”
  • 哈哈,真的。然而,它的失误领先,当你说“英语”但你不使用我们的日期时,它们应该更特别
  • “英语语言环境”指的是英格兰的某个地方,而许多语言环境都使用英语。使用“语言环境”来指代与位置无关的偏好,说明“偏好”是一个更好的术语。但听起来并不那么时髦。 :-/

标签: javascript node.js date momentjs


【解决方案1】:

尽管moment(string) interface 中没有记录,但 Moment 似乎正在使用美国日期约定。

一个简单的例子是here

【讨论】:

  • 记录在案:“[moment] 首先检查[s] 字符串是否与已知的 ISO 8601 格式匹配,如果未找到已知格式则回退到新日期(字符串)" 告诉你对于 OP 中的格式,moment 回退到浏览器的解析器。
  • 公平,我假设浏览器设置为他的语言环境,并会解析他写的内容。我猜 Date.parse() 是罪魁祸首。
  • 浏览器解析器不会注意到解析日期字符串的区域设置(有些也忽略了 toLocaleString)。如果冰岛的用户正在浏览位于新加坡的网站上的页面,并且语言设置为马来西亚,那么应该使用什么区域设置来解析日期字符串?
  • 公平,再次。我假设 Date.parse 反转 Date.toLocaleString() 或类似的东西。
【解决方案2】:

根据moment(string) 的文档,如果在解析字符串时未提供格式,它将首先尝试匹配 ECMA-262 中指定的 ISO 8601 格式之一。否则,它将简单地将字符串传递给new Date(string),这与使用 Date.parse 相同。

所以结果完全取决于实现。但是,大多数浏览器会将 nn/nn/nn 视为具有两位数年份的美式日期,即 mm/dd/yy。但这并不能保证,并且可能会因浏览器而异。

解决方法是在解析字符串时始终传递格式。

在第二个示例中,指定的格式与提供的字符串不匹配。在这种情况下,它似乎也回退到 Date.parse

【讨论】:

    【解决方案3】:

    您的日期格式字符串使用连字符(“-”)而实际日期使用斜杠(“/”),因此 Moment.Js 无法解析它。在以下示例中工作正常

    $("body").text(moment("16/10/10 15:00", "DD/MM/YY H:m").format())
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-22
      • 1970-01-01
      • 2019-04-23
      • 2021-12-15
      • 1970-01-01
      • 2017-03-06
      • 2021-06-19
      • 2012-07-03
      相关资源
      最近更新 更多