【发布时间】:2016-10-31 05:41:05
【问题描述】:
我正在从电子邮件中提取日期(以多种可能的格式),然后将其传递给需要 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)
如何使用 moment 来解析所有这些格式等等?
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/22/2016示例是明确的,但如果电子邮件中的日期是1/2/2016- 您怎么知道是 2 月 1 日还是 1 月 2 日? -
也许chrono 适合你?除此之外,请注意不同的环境对 Dates 的解析方式不同。 Firefox 不理解
Date.parse('January 2020'),但 v8(Chrome 等)可以。
标签: javascript date parsing momentjs