解析不明确的日期时,如何强制Moment.js优先处理前一天?

时间:2019-02-11 15:38:15

标签: javascript date momentjs

是否有一种方法可以迫使Moment.js在模棱两可的情况下始终假定日期在月份之前?

例如:

  • moment("10-05-2018")应该是2018年5月10日
  • moment("06/08/2018")应该是2018年8月6日
  • moment("01 03 2018")应该是2018年3月1日

1 个答案:

答案 0 :(得分:2)

只需使用moment(String, String),其中DD是月中的某天,MM是月数,而YYYY是4或2位数字的年。

请注意,由于您的输入既不是公认的ISO 8601格式也不是RFC 2822格式,因此您应在moment(String, String)上使用moment(String),以在浏览器中获得一致的结果。

  

从字符串创建时刻时,我们首先检查字符串是否与已知的ISO 8601格式匹配,然后检查字符串是否与RFC 2822 Date time格式匹配,然后放回{{1 }}(如果找不到已知格式)。

     

警告:浏览器对字符串的解析支持为inconsistent。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的格式在其他浏览器中无效。

     

要获得一致的结果以解析ISO 8601字符串以外的任何内容,应使用String + Format

这里有现场样本

new Date(string)
["10-05-2018","06/08/2018", "01 03 2018"].forEach( (item) => {
  console.log( moment(item, 'DD MM YYYY').format() );
});