我是javascript的新手。 我试图将字符串中的日期与curent javascript日期进行比较。
function testDate() {
var theTestDate = "21:36:40 30/02/2014";
var xxx = new Date();
var theTestDateNow = xxx.getHours() + ':' + xxx.getMinutes() + ':' + xxx.getSeconds() + ' ' + xxx.getDate() + '/' + (xxx.getMonth()+1) + '/' + xxx.getFullYear();
if (theTestDateNow < theTestDate) {
alert("New");
} else {
alert ("old");
}
}
testDate();
我尝试将当前日期格式化为该字符串格式,但现在我认为需要格式化该strig,以便javascript可以知道它是一个日期;我不知道怎么做。
答案 0 :(得分:1)
将测试日期转换为Date对象会更容易 (有几种方法可以做到)并且只是比较它们:
function testDate() {
var theTestDate = "21:36:40 30/02/2014";
var testDateObject = Date(Date.parse(theTestDate ));
var now= new Date();
if (testDateObject > now) {
alert("New");
} else {
alert ("old");
}
}
testDate();
Date.parse()使用格式合适的日期字符串
Date()标准构造函数:日期(年,月-1,日,小时,分钟,秒,毫秒)
function parseDate(str) {
var parts = str.match(/\d+/g); //extract group of digits
return new Date(parts[5],parts[4]-1,parts[3],parts[0],parts[1],parts[2]);
}
var my_date = parseDate('21:36:40 15/02/2014');
var now= new Date();
alert( (my_date > now) ? 'New':'Old');
答案 1 :(得分:1)
您可以使用正则表达式提取所需的所有日期信息:
var theTestDate = "21:36:40 30/02/2014";
var data = theTestDate.match(/(\d{1,2}):(\d{1,2}):(\d{1,2})\s+(\d{1,2})\/(\d{1,2})\/(\d{1,4})/);
// OR: if you are certain that your date always contains 2 digits for hours, 4 digits for year, ...
var data = theTestDate.match(/(\d{2}):(\d{2}):(\d{2})\s+(\d{2})\/(\d{2})\/(\d{4})/);
var date = new Date(
data[6], // year
data[5] - 1, // month, 0 based index
data[4], // day
data[1], // hours
data[2], // minutes
data[3] // seconds
);
基本上,(\ d {1,2})将匹配1或2位数,并且正则表达式将匹配日期格式的字符串。在此处阅读有关正则表达式的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp
答案 2 :(得分:0)