将数字转换为日期的时刻



试图了解 moment.js 如何转换字符串到日期,我已经反弹到这个问题。

let date = "User has logged in to more than 10 .";
console.log(moment(date)); //output date
let invalid = "User has logged in to more than 10 a";
console.log(moment(invalid)); //output invalid date
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.js
"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-range/2.2.0/moment-range.js"></script>

有人可以向我解释一下吗?

代码笔链接

当你传递字符串时,moment检查它是否是有效的日期格式,如果不是,它会回退到内置的javascriptDate.parse()方法。

那一刻.js文档说:

从字符串创建时刻时,我们首先检查字符串是否 匹配已知的ISO 8601格式,然后我们检查字符串是否匹配 RFC 2822 日期时间格式,然后下降到新的回退 日期(字符串(,如果未找到已知格式。

Date.parse在遇到10之前不会识别字符串中任何有用的东西;它会丢弃其余的。采用默认日期格式,具体取决于您的位置和语言。就我自己而言,在美国,格式是MM/DD.结果是字符串被解析为 10 月 1 日的日期(第 10 个月,未指定日期默认为 1 日(。然后(出于Y2K式的原因,我怀疑(它假设是2001年,因为没有给出年份。

我们从javascript的内置Date方法中得到相同的行为:

new Date(Date.parse('User has logged in to more than 10.'))
// Mon Oct 01 2001 00:00:00 GMT-0400 (EDT) <- As printed from Michigan.

在第二种情况下,您尝试用10 a而不是10 .结束字符串,如果您将其传递给内置的Date方法,您会注意到相同的行为 (invalid date(。

相关内容

  • 没有找到相关文章

最新更新