首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS简略日期比较

2012-09-19 
JS简单日期比较纯属练习,只能实现简单的日期比较,不足之处欢迎各路高手指出。欢迎贴代码。var LESSTHEN 0

JS简单日期比较
纯属练习,只能实现简单的日期比较,不足之处欢迎各路高手指出。欢迎贴代码。

var LESSTHEN = 0;var EQUALS = 1;var GREATERTHEN = 2;var ERROR = 3;/** * 校验输入内容为合法日期 * @param {String} str 日期字符串 * @return {Boolean} true:日期符合格式yyyy-MM-dd或yyyy/MM/dd false:日期不符合格式yyyy-MM-dd或yyyy/MM/dd */function isValidDate(str){    var checkStr = str;var reg = "/";checkStr = checkStr.replace(/-/g,reg)    var m = checkStr.length;    var year;    var month;    var day;    if(!(checkStr == null || checkStr=="" ))    {        if(m == 10 && checkStr.charAt(4) == reg && checkStr.charAt(7) == reg)        {            year = parseInt(checkStr.split(reg)[0],10);            month = parseInt(checkStr.split(reg)[1],10);            day = parseInt(checkStr.split(reg)[2],10);if(month > 12 || month == 0){            alert(checkStr + "的格式不符,要求月份在1-12之间!");                return false;            }            if(day > 31 || day ==0)            {                alert(checkStr + "的格式不符,要求日在1-31之间!");                return false;            }            else if((month == 2 || month == 4 || month ==6 || month ==9 || month ==11) && day == 31)            {                alert(checkStr + "的格式不符," + month + "月无31日!");return false;            }            else if(month == 2  && day == 30)            {            alert(checkStr + "的格式不符,"+year+"月" +month+"月无30日!");                return false;            }            else if((year%100==0)&&(year%400!=0) && month == 2  && day == 29)            {                alert(checkStr + "的格式不符,"+year+"月" +month+"月无29日!");                return false;            }            else if((year%4)!=0 && month == 2  && day == 29)            {                alert(checkStr + "的格式不符,"+year+"月" +month+"月无29日!");                return false;            }        }        else        {            alert(checkStr + "的格式不符,要求yyyy-MM-dd或yyyy/MM/dd!");            return false;        }    }    return true;}/** * 日期比较 * @param {Date} d1 日期1 * @param {Date} d2 日期2 * @return {Number} 0:小于 1:等于 2:大于 3 错误 */function dateCompare(d1,d2){       //如果比较的不是日期,直接返回false    if(!(d1 instanceof Date) || !(d2 instanceof Date))    {        return ERROR;    }    var d1Year = d1.getFullYear();    var d2Year = d2.getFullYear();    var d1Month = d1.getMonth();    var d2Month = d2.getMonth();    var d1Date = d1.getDate();    var d2Date = d2.getDate();    //比较年    if (d1Year < d2Year)    {        return LESSTHEN;    }        //如果年相等,比较月    if (d1Year == d2Year)    {           if (d1Month < d2Month)        {            return LESSTHEN;        }    }    //如果年,月都相等,比较日    if (d1Year == d2Year)    {           if(d1Month == d2Month)        {        if (d1Date < d2Date)        {           return LESSTHEN;        }                else if (d1Date == d2Date)        {            return EQUALS;        }        else        {            return GREATERTHEN;        }        }        else        {           return GREATERTHEN;        }    }    else    {       return GREATERTHEN;    }    }/** * 日期比较 * @param {String} d1 日期1 格式为:yyyy-MM-dd或yyyy/MM/dd * @param {String} d2 日期2 格式为:yyyy-MM-dd或yyyy/MM/dd * @return {Number} 0:小于 1:等于 2:大于 3 错误 */function dateCompareStr(d1,d2){   var reg = "/";    if(isValidDate(d1)&&isValidDate(d2))    {        d1 = new Date(Date.parse(d1.replace(/-/g,reg)));    d2 = new Date(Date.parse(d2.replace(/-/g,reg)));        return dateCompare(d1,d2);    }    else    {           return ERROR;    }    }


测试代码
alert(dateCompareStr('2010-08-30','2011-08-30'));alert(dateCompareStr('2011-08-30','2011-08-30'));alert(dateCompareStr('2011-08-30','2010-07-30'));


结果
0
1
2

热点排行
Bad Request.