javascript/jquery比较日期时间值

javascript/jquery比较日期时间值,javascript,jquery,validation,datetime,Javascript,Jquery,Validation,Datetime,这似乎是一个简单且常见的问题,但在谷歌搜索了一段时间后,还没有找到答案 非常简单,我有两个变量,每个变量都有一个日期时间值,格式为yyyy-mm-dd-hh:mm 我想比较哪个更大,并相应地执行逻辑: 例如: 以上操作持续返回成功的验证 有什么建议吗?例子?谢谢,您正在使用的格式恰好可以在词汇上进行比较。因此不需要解析: var fromDate = '2014-02-14 07:00'; var toDate = '2014-02-14 07:00'; if (fromDate > to

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

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

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

例如:

以上操作持续返回成功的验证


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

您正在使用的格式恰好可以在词汇上进行比较。因此不需要解析:

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");
}
这是因为在整个字符串中,最重要的字段位于不太重要的字段之前

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

  • 使用MomentJS之类的库

  • 对字符串进行按摩,使其采用受支持的格式,但请注意,在ES5之前,没有规范规定的标准格式

  • 自己动手

  • 后者看起来像这样:

    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
    。parse。

    您正在使用的格式可以从词汇上进行比较。因此不需要解析:

    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");
    }
    
    这是因为在整个字符串中,最重要的字段位于不太重要的字段之前

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

  • 使用MomentJS之类的库

  • 对字符串进行按摩,使其采用受支持的格式,但请注意,在ES5之前,没有规范规定的标准格式

  • 自己动手

  • 后者看起来像这样:

    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
    。parse。

    您正在使用的格式可以从词汇上进行比较。因此不需要解析:

    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");
    }
    
    这是因为在整个字符串中,最重要的字段位于不太重要的字段之前

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

  • 使用MomentJS之类的库

  • 对字符串进行按摩,使其采用受支持的格式,但请注意,在ES5之前,没有规范规定的标准格式

  • 自己动手

  • 后者看起来像这样:

    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
    。parse。

    您正在使用的格式可以从词汇上进行比较。因此不需要解析:

    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");
    }
    
    这是因为在整个字符串中,最重要的字段位于不太重要的字段之前

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

  • 使用MomentJS之类的库

  • 对字符串进行按摩,使其采用受支持的格式,但请注意,在ES5之前,没有规范规定的标准格式

  • 自己动手

  • 后者看起来像这样:

    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

    这很难看,但可以达到目的

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

    这真的很难看,但却达到了目的

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

    这真的很难看,但却达到了目的

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

    这真的很难看,但却达到了目的

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

    你的代码工作得很好。你使用哪种浏览器?但问题的关键是,您在问题中的两个日期都是相同的,而在您的示例中则不同。@MehranHatami:如果该代码在您的浏览器中工作,那是因为您的浏览器超出了规范的要求。你不能跨浏览器依赖它。@t.J.Crowder:这就是为什么我问起浏览器的问题。@MehranHatami:但是“你的代码工作得很好”有点误导,如果它依赖于未记录的浏览器行为,而不是通用的。:-)你的代码工作得很好。你使用哪种浏览器?但问题的关键是,您在问题中的两个日期都是相同的,而在您的示例中则不同。@MehranHatami:如果该代码在您的浏览器中工作,那是因为您的浏览器超出了规范的要求。你不能跨浏览器依赖它。@t.J.Crowder:这就是为什么我问起浏览器的问题。@MehranHatami:但是“你的代码工作得很好”有点误导,如果它依赖于未记录的浏览器行为,而不是通用的。:-)你的代码工作得很好。你使用哪种浏览器?但问题的关键是,您在问题中的两个日期都是相同的,而在您的示例中则不同。@MehranHatami:如果该代码在您的浏览器中工作,那是因为您的浏览器超出了规范的要求。你不能跨浏览器依赖它。@t.J.Crowder:这就是为什么我问起浏览器的问题。@MehranHatami:但是“你的代码工作得很好”有点误导,如果它依赖于未记录的浏览器行为,而不是通用的。:-)你的代码工作得很好。你使用哪种浏览器?但问题的关键是,您在问题中的两个日期都是相同的,而在您的示例中则不同。@MehranHatami:如果该代码在您的浏览器中工作,那是因为您的浏览器超出了规范的要求。你不能跨浏览器依赖它。@t.J.Crowder:这就是为什么我问起浏览器的问题。@MehranHatami:但是“你的代码工作得很好”有点误导,如果它依赖于未记录的浏览器行为,而不是通用的。:-)