Javascript:从字符串中提取日期?

标签 javascript regex replace

我有一个字符串格式为

Today 3:28AM
Yesterday 3:28AM
08/22/2011 3:28AM

我需要做的是以某种方式将字符串的日期部分提取到变量中,即。 “今天”、“昨天”或格式为 DD/MM/YYYY 的日期。

用 JavaScript 可以实现这样的事情吗?

最佳答案

由于 JavaScript 日期解析器无法识别您的日期,因此您可以编写一个解析器,将日期转换为它可以识别的格式。这是一个函数,它采用您提供的日期示例并格式化它们以获得有效的日期字符串:

function strToDate(dateStr) {
    var dayTimeSplit = dateStr.split(" ");  
    var day = dayTimeSplit[0];
    var time = dayTimeSplit[1];

    if (day == "Today") {
        day = new Date();
    } else if (day == "Yesterday") {
        day = new Date();
        day.setDate(day.getDate() - 1);
    } else {
        day = new Date(day);
    }

    var hourMinutes = time.substring(0, time.length -2);
    var amPM = time.substring(time.length -2, time.length);

    return new Date((day.getMonth() + 1) + "/" + day.getDate() + "/" + day.getFullYear() 
        + " " + hourMinutes  + " " + amPM);
}

然后您可以调用 stroToDate 将日期格式转换为有效的 JavaScript 日期:

console.log(strToDate("Today 3:28AM")); 
console.log(strToDate("Yesterday 3:28AM"));
console.log(strToDate("08/22/2011 3:28AM"));

输出:

Sun Sep 25 2011 03:28:00 GMT-0700 (Pacific Daylight Time)
Sat Sep 24 2011 03:28:00 GMT-0700 (Pacific Daylight Time)
Mon Aug 22 2011 03:28:00 GMT-0700 (Pacific Daylight Time)

关于Javascript:从字符串中提取日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7550416/

相关文章:

javascript - jquery onchange 选择选项不起作用

javascript - 'need' 原型(prototype)函数与内部函数的示例场景是什么?

java - 我如何从 Android SDK 解析 PHP 数组?

javascript - 使用 lodash _.words 时如何不在破折号/连字符上分开?

regex - 与正则表达式逻辑作斗争 : how do I remove a param from a url query string?

javascript - Electron - 单击按钮执行程序

javascript - 向 PHP 发送 AJAX post 请求

regex - 使用 sed 和正则表达式捕获 url 的最后一部分

bash - 如何替换除 TeX 命令后出现的所有空格?

java - 为什么我的方法使用 String.replace 和 HashMap 不替换字符串?