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

时间:2011-09-26 03:32:26

标签: javascript regex replace

我有一个格式为

的字符串
Today 3:28AM
Yesterday 3:28AM
08/22/2011 3:28AM

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

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

5 个答案:

答案 0 :(得分:3)

由于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)

答案 1 :(得分:1)

显然,“今天”和“昨天”永远不能转变为真正的数字日期,现在看来你在这里想要做的就是把它保存为“今天”和“昨天”,对吗? / p>

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

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

javascript函数: http://www.w3schools.com/jsref/jsref_split.asp

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

答案 2 :(得分:0)

以下是一个类似的问题:Javascript equivalent of php's strtotime()?

以下是链接文章:http://w3schools.com/jS/js_obj_date.asp

建议的解决方案:

  

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

var d=new Date("October 13, 1975 11:13:00");

答案 3 :(得分:0)

有几种方法可以做到这一点。我会提供2个。

选项1: 如果总是在字符串的开头那天你可以使用像/([a-z0-9]*)\s|([0-9]{1,})\/([0-9]{1,})\/([0-9]{1,})\s/这样的正则表达式捕获第一部分 - 我不是最好的正则表达式编写器。

选项2: 如果时间在一天之后,你也可以做一个积极的展望(就像你上面的例子。这是一个链接,正确的JS regex语法。http://www.javascriptkit.com/javatutors/redev2.shtml你可以向下滚动到前瞻,看一个例子,应该让你在那里得到你的帮助。

答案 4 :(得分:0)

var reTYD = /(today|yesterday|\d{1,2}\/\d{1,2}\/\d{4})/i;
console.log( myString.match(reTYD) );