将完整日期字符串(例如“ 2019年3月23日星期六”)转换为Javascript Date()

时间:2019-03-23 17:36:48

标签: javascript date data-conversion

如何将类似“ 2019年3月23日星期六”的字符串转换为Javascript日期?

出于某种原因,它说无效日期,并且与此类似的其他问题试图将“ 23-03-2019 10:00”等字符串转换为Date,而这更多是一个完整的日期字符串。

2 个答案:

答案 0 :(得分:1)

最好的选择是使用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>

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

答案 1 :(得分:0)

实际上是导致问题的23日的“ rd”。否则,原样的字符串将转换为日期。我已使用正则表达式替换将“ 23rd”替换为“ 23”。在另一个示例中也抛出了“ 1st”。

var dateString = "Saturday 23rd March 2019";

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

console.log(new Date(cleanDateString));

dateString = "Friday 1st March 2019";

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

console.log(new Date(cleanDateString));