将 "Saturday 23rd March 2019" 之类的完整日期字符串转换为 Javascript Date()

Converting a full date string like "Saturday 23rd March 2019" to Javascript Date()

如何将 "Saturday 23rd March 2019" 之类的字符串转换为 Javascript 日期?

出于某种原因,它说无效日期和其他类似的问题正在尝试将“23-03-2019 10:00”等字符串转换为日期,而这更像是一个完整的日期字符串。

最好的办法是使用像 moment js 这样的库来解析该字符串并告诉它预期的格式:

const str = "Saturday 23rd March 2019";
const m = moment(str, "dddd Do MMMM YYYY");

console.log(m.toDate())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

如果格式不一致,您将需要编写一个自定义解析器,这不是一件容易的事。

实际上是 23 号的 "rd" 导致了这个问题。否则,字符串将按原样转换为日期。我使用正则表达式替换将“23rd”替换为“23”。还抛出了另一个例子来捕获“1st”。

var dateString = "Saturday 23rd March 2019";

var cleanDateString = dateString.replace(/(\d+)(rd|st|nd|th)/, "");

console.log(new Date(cleanDateString));

dateString = "Friday 1st March 2019";

cleanDateString = dateString.replace(/(\d+)(rd|st|nd|th)/, "");

console.log(new Date(cleanDateString));