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

Javascript:从字符串中提取日期?,javascript,regex,replace,Javascript,Regex,Replace,我有一个字符串格式为 Today 3:28AM Yesterday 3:28AM 08/22/2011 3:28AM 我需要做的是以某种方式将字符串的日期部分提取到变量中,即“今天”、“昨天”或格式为DD/MM/YYYY的日期 Javascript是否可以实现类似的功能?这里有一个类似的问题: 以下是链接文章: 建议的解决办法是: 基本上,您可以使用日期构造函数来解析日期 很明显,“今天”和“昨天”永远无法转换回真正的数字日期,因为现在看来,您在这里试图做的是将其保存为“今天”和“昨天”,对吗

我有一个字符串格式为

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


Javascript是否可以实现类似的功能?

这里有一个类似的问题:

以下是链接文章:

建议的解决办法是:

基本上,您可以使用日期构造函数来解析日期

很明显,“今天”和“昨天”永远无法转换回真正的数字日期,因为现在看来,您在这里试图做的是将其保存为“今天”和“昨天”,对吗

您指定的dd/mm/yyyy hh:mmxx似乎总是用空格分隔

因此,您可以将字符串一分为二,并将第一部分保存为日期

javascript函数:


至于如何从“今天”转换回2011年9月26日等,您需要从XML方面寻求解决方案。

有几种方法可以做到这一点。我将提供其中两个

备选案文1:
如果一天总是在字符串的开头,那么可以使用正则表达式捕获第一部分,比如
/([a-z0-9]*)\s |([0-9]{1,})\/([0-9]{1,})\/([0-9]{1,})\s/
,因为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将日期转换为“今天”或“昨天”,则可以删除该JavaScript以获得所需的内容。不幸的是,此数据来自一个XML源,该源以这种方式格式化日期:(实际上它看起来总是在前面,并且总是由空格分隔,所以split()就可以了
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)
var reTYD = /(today|yesterday|\d{1,2}\/\d{1,2}\/\d{4})/i;
console.log( myString.match(reTYD) );