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) );