我从电子邮件中提取日期(以多种可能的格式),然后将其传递给期望ISO格式的应用程序 . 我被告知我可以使用moment.js来解析各种格式的日期 .
Found: 1/22/2016
Milliseconds: 1453449600000
ISO: Fri Jan 22 2016 00:00:00 GMT-0800 (PST)
Found: Jan 22 2016
Milliseconds: 1453449600000
ISO: Fri Jan 22 2016 00:00:00 GMT-0800 (PST)
Found: 2016/1/22 03:00
Milliseconds: 1453460400000
ISO: Fri Jan 22 2016 03:00:00 GMT-0800 (PST)
如何使用时刻来解析所有这些格式以及更多?
var foundDue = taskNote.match(/(Deadline|Due):.*(\n|$)/ig);
// if we've found a deadline date...
if (foundDue) {
// Remove deadline/due tag
foundDue = foundDue[0].replace(/(Deadline|Due):? */i, "");
// Remove trailing and leading spaces
foundDue = foundDue.replace(/(^\s*|\s$)*/, "");
console.log("Found: "+ foundDue);
// Use a magic method to parse date
milliseconds = moment.??????(foundDue);
console.log("Milliseconds: "+ milliseconds);
console.log("Parsed2: "+ new Date(foundDue));
var taskDue = new Date(milliseconds);
console.log("ISO: "+ taskDue);
}
注意,这个问题改编自earlier question .
1 回答
您可以使用moment parsing with multiple formats将输入字符串转换为时刻对象,然后您可以使用时刻valueOf()来获得毫秒数 .
这是您的问题中给出的输入的示例代码段:
Note ,正如文档所说,当使用多种格式时:
在上面的代码示例中,像
01/02/2016
这样的 ambiguous 输入将始终被解析为January 2nd 2016
.