将字符串转换为日期并与当前日期进行比较

时间:2014-02-20 12:58:58

标签: javascript date format

我是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可以知道它是一个日期;我不知道怎么做。

3 个答案:

答案 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)

您可以使用moment.js并按照以下方式执行此操作:

if (moment(theTestDate, 'MM/DD/YYYY') > moment(curdate))

或者如果您使用Date.js库,那么您可以尝试这样:

if (Date.parse(theTestDate) > Date.parse(curdate))