是否有一种方法可以迫使Moment.js在模棱两可的情况下始终假定日期在月份之前?
例如:
moment("10-05-2018")
应该是2018年5月10日moment("06/08/2018")
应该是2018年8月6日moment("01 03 2018")
应该是2018年3月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() );
});