首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较闰年的日期字段

比较闰年的日期字段
EN

Stack Overflow用户
提问于 2013-05-10 20:08:28
回答 2查看 129关注 0票数 1

我想比较两个日期字段..我已经非常接近了,它甚至工作得很好..

但是当"ToDate“字段是一个

代码语言:javascript
运行
复制
leap year>= "FromDate"

例如:

代码语言:javascript
运行
复制
from date= 29/02/1996
to date= 29/02/1996
to date= 29/02/1992
to date= 29/02/1995

代码运行良好..

但是如果

代码语言:javascript
运行
复制
from date= 29/03/1996
to date= 29/02/1996

代码失败...

这是我的代码

代码语言:javascript
运行
复制
function isDate(value)
{
    var fromDate = document.getElementById("fromDate").value
    var toDate= document.getElementById("toDate").value
    var dateRegEx = null;
    dateRegEx = new RegExp(/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g);

    if (dateRegEx.test(fromDate)){
    }
    else{
        alert("Invalid from date");
        return false;
    }
    dateRegEx = new RegExp(/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$/g);
    if(dateRegEx.test(toDate)) {
    }
    else{
        alert("Invalid to date");
        return false;
    }
    var stDate = new Date(fromDate);
    var enDate = new Date(toDate);
    var compDate = enDate - stDate;

    if(compDate > 0)
        return true;
    else
    {
        alert("Please Enter the correct date ");
        return false;
    }
    /**/
}

如何使它适用于所有leap years...where我必须在代码中进行更改。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-10 20:10:24

这是一个出色的jQuery插件,可以执行您想要的操作:http://momentjs.com/

票数 3
EN

Stack Overflow用户

发布于 2013-05-10 20:21:03

这是一个使用moment.js的解决方案

代码语言:javascript
运行
复制
function isDate(value)
{
    var fromDate = moment(document.getElementById("fromDate").value);
    var toDate = moment(document.getElementById("toDate").value);

    if (fromDate.isValid()) {
    }
    else {
        alert("Invalid from date");
        return false;
    }

    if(toDate.isValid()) {
    }
    else {
        alert("Invalid to date");
        return false;
    }

    if(toDate.isAfter(fromDate))
        return true;
    else
    {
        alert("Please Enter the correct date ");
        return false;
    }
}

根据日期的表示方式,您可能需要为moment构造函数提供另一个参数来指示格式。参见。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16481893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档