【问题标题】:Converting a full date string like "Saturday 23rd March 2019" to Javascript Date()将完整的日期字符串(如“2019 年 3 月 23 日星期六”)转换为 Javascript Date()
【发布时间】:2019-03-23 17:36:48
【问题描述】:

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

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

【问题讨论】:

    标签: javascript date data-conversion


    【解决方案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>

    如果格式不一致,您将需要编写一个自定义解析器,这不是一个简单的练习。

    【讨论】:

    • "如果格式不一致……" 那么任何解析器都会遇到困难,内置解析器的变幻莫测就是明证。 ;-)
    【解决方案2】:

    实际上是 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));

    【讨论】:

    • 如果你要麻烦修改字符串以将其提供给解析器,你还不如自己解析它,它只是 3 行代码。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多