繁体   English   中英

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

[英]Javascript: Extract a date from a string?

我有一个格式为

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)

显然,“今天”和“昨天”永远都不能转换回实际的数字日期,现在看来您要在此处执行的操作是将其另存为“今天”和“昨天”,对吗?

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

因此您可以将字符串分成两部分,然后将第一部分保存为日期。

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

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

这是一个类似的问题: 等同于php的strtotime()的Javascript?

这是链接的文章: http : //w3schools.com/jS/js_obj_date.asp

以及建议的解决方案:

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

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

您可以通过两种方法来执行此操作。 我将提供其中的两个。

option1:如果一天总是在字符串的开头,则可以使用/([a-z0-9]*)\\s|([0-9]{1,})\\/([0-9]{1,})\\/([0-9]{1,})\\s/类的正则表达式来捕获第一部分/([a-z0-9]*)\\s|([0-9]{1,})\\/([0-9]{1,})\\/([0-9]{1,})\\s/ <-不是最佳的正则表达式编写器。

option2:如果时间刚好在第二天之后,您也可以进行积极的展望(例如上面的示例。这是带有JS regex正确语法的链接。http://www.javascriptkit.com/javatutors/redev2。) shtml,您可以向下滚动至前瞻,并查看一个示例,该示例应该可以帮助您。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM