javascript / jquery比较datetime值

时间:2014-02-09 16:57:23

标签: javascript jquery validation datetime

似乎是一个简单且常见的问题,但谷歌搜索了一段时间后还没有得到答案。

很简单,我有两个变量,每个变量的日期时间值格式为yyyy-mm-dd hh:mm

我想比较哪个更大并相应地执行逻辑:

示例:here

var fromDate = '2014-02-14 07:00';
var toDate = '2014-02-14 07:00';
if (Date.parse(fromDate) > Date.parse(toDate)) {
    alert("Invalid Date Range!\nStart Date cannot be after End Date!")
} else {
    alert("VALID Date Range!\n Start Date is before End");
}

以上不断返回成功验证。

有什么建议,建议吗?例子?谢谢,

2 个答案:

答案 0 :(得分:3)

您正在使用的格式可以通过lexigraphically进行比较。所以不需要解析:

var fromDate = '2014-02-14 07:00';
var toDate = '2014-02-14 07:00';
if (fromDate > toDate) {
    alert("Invalid Date Range!\nStart Date cannot be after End Date!");
} else {
    alert("VALID Date Range!\n Start Date is before End");
}

这是因为在整个字符串中,最重要的字段位于不太重要的字段之前。

但是如果确实想要日期/时间值,则规范不直接支持该字符串格式。你有三个选择:

  1. 使用像MomentJS这样的库。

  2. 按下字符串使其处于支持的格式,但请注意,在ES5之前, 没有规范所规定的标准格式。

  3. 自己动手

  4. 后者看起来像这样:

    function parseMyDate(str) {
        var parts = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})/.exec(str);
        if (!parts) {
            return null;
        }
        return new Date(parseInt(parts[1], 10),      // Year
                        parseInt(parts[2], 10) - 1), // Month
                        parseInt(parts[3], 10),      // Day
                        parseInt(parts[4], 10),      // Hours
                        parseInt(parts[5], 10));      // Minutes
    }
    

    然后使用上面有parseMyDate的{​​{1}}。

答案 1 :(得分:0)

这真的很难看但是有目的......

    var fromDate = '2014-02-27 09:00';
    fromDate=fromDate.replace("-", "/");
    fromDate=fromDate.replace("-", "/");
    var toDate = '2014-02-27 10:00';
    toDate=toDate.replace("-", "/");
    toDate=toDate.replace("-", "/");


var fromDate=(new Date(fromDate).getTime()/1000);
var toDate=(new Date(toDate).getTime()/1000);

if(fromDate>toDate){
    alert('CORRECT');
} else {
    alert('INCORRECT, from after to');
}