【发布时间】:2019-03-23 17:36:48
【问题描述】:
如何将“2019 年 3 月 23 日星期六”之类的字符串转换为 Javascript 日期?
由于某种原因,它说无效日期和其他类似的问题正在尝试将“23-03-2019 10:00”等字符串转换为日期,而这更像是一个完整的日期字符串。
【问题讨论】:
标签: javascript date data-conversion
如何将“2019 年 3 月 23 日星期六”之类的字符串转换为 Javascript 日期?
由于某种原因,它说无效日期和其他类似的问题正在尝试将“23-03-2019 10:00”等字符串转换为日期,而这更像是一个完整的日期字符串。
【问题讨论】:
标签: javascript date data-conversion
最好的办法是使用像 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”。还在另一个示例中抛出以捕获“第一个”。
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));
【讨论】: