[英]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.