`

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
分享到:
评论

相关推荐

    js中日期的比较

    ### JavaScript中的日期比较 在JavaScript开发中,对日期进行比较是一项常见的需求,尤其是在涉及时间管理、数据排序等场景时。本文将详细介绍如何在JavaScript中实现日期的比较,并提供几种不同的方法来帮助开发者...

    纯JS方法比较日期之间大小(实用)

    通过这种方式,可以有效地处理日期比较问题,适用于多种场景下的需求。 ### 总结 本文介绍了一种纯JS方法来比较日期之间的大小,并给出了详细的步骤和代码实现。这种方法简单实用,适用于大多数Web开发项目。通过...

    一个简单功能的js日期插件

    《一个简单功能的js日期插件》 在前端开发中,日期处理是一个常见的需求,而JavaScript作为浏览器端的主要脚本语言,其内置的Date对象虽然提供了基础的日期操作,但在复杂的交互和格式化方面往往显得力不从心。此时...

    一个简易js日期下拉选择菜单

    "一个简易js日期下拉选择菜单" 提供了一个用JavaScript实现的简单解决方案,无需依赖任何外部库,如jQuery或Moment.js。这种自定义的日期选择器可以有效地减少页面加载时间,特别适用于对性能有要求的小型项目。 ...

    纯js日期控件,使用简单

    本教程将详细讲解一个基于纯JavaScript实现的日期控件,其特点在于使用简单,无需依赖任何外部库。 1. **纯JavaScript实现** 这个日期控件完全由JavaScript编写,不依赖jQuery或其他JavaScript框架,这使得它在...

    js 判断日期大小

    在JavaScript(以下简称JS)编程语言中,处理日期和时间是一个常见的需求,特别是在涉及日期比较、时间戳转换等操作时。本文将围绕“JS判断日期大小”这一主题,深入解析如何利用JS内置的Date对象和一些实用函数来...

    js 日期选择 简单漂亮

    在JavaScript(简称JS)开发中,处理日期选择是常见的需求,尤其在网页表单或交互式界面中。"js 日期选择 简单漂亮"的实现通常涉及到创建一个直观且用户友好的日期选择器,使得用户能够方便地选取特定日期。本主题将...

    超级简单好用的JS日期控件

    标题中提到的“超级简单好用的JS日期控件”很可能是一个基于JavaScript实现的日期选择插件,它提供了方便快捷的日期选择功能,避免了.NET自带控件的复杂性。这种控件通常会在用户聚焦到输入框时,通过JS事件监听机制...

    超简洁的JS日期控件

    在本案例中,我们关注的是一个名为"超简洁的JS日期控件"的组件,它提供了一种简单的方式在HTML页面中添加日期选择功能。 该日期控件的核心是名为`setday.js`的JavaScript文件。这个文件包含了实现日期选择功能的...

    js日期选择插件

    例如,它可以提供一个简单的API,允许开发者通过指定最小日期(日期下限)和最大日期(日期上限)来限制用户的选择范围。这样,你可以确保用户不能选择超出业务逻辑所允许的日期范围。 插件的实现通常包括以下几个...

    JS 日期控件 可自定义日期格式及选择方式

    "JS 日期控件"是一个专门处理日期选择功能的JavaScript库,它简化了开发者在网页上添加日期选择功能的过程。下面将详细探讨这一主题,包括其核心特性、使用方法以及自定义选项。 1. **核心特性** - **轻量级**:JS...

    简易日期选择器(JS版)

    【简易日期选择器(JS版)】是一款JavaScript实现的日期选择工具,专为网页应用设计,具有良好的浏览器兼容性,支持古老的Internet Explorer 6和7,以及Firefox 3.1900年至2099年的日期范围。该日期选择器提供了一套...

    js农历公历日期相互转换函数javascript日期转换

    调用简单,下拉传一日期加类型即可转换日期的类型,如: CalConvert(new Date(2010,3,19), false) //农历转换为公历 CalConvert(new Date(2010,3,19), true)//公历转换成农历

    JS日期/时间控件(简单易用)

    - **日期对象(Date Object)**:JavaScript内置的Date对象用于处理日期和时间,可以创建、比较和操作日期。 - **DOM事件(DOM Events)**:在用户与网页进行交互时触发的事件,如点击、改变等,JS通过监听这些...

    js实现日期选择控件

    JavaScript(简称JS)是一种轻量级的脚本语言,常用于网页交互和动态效果的实现。在网页中,实现一个日期选择控件可以提供用户友好的界面,方便他们选择日期。这里我们讨论如何使用JS来创建一个简单的日期选择器。 ...

    js 下拉日期

    Moment.js 是一个强大的JavaScript日期库,可以轻松处理日期格式化、解析和比较。Pickadate.js 是一个轻量级的日期选择器,可以与Moment.js结合使用,提供灵活的日期选择功能。 6. **Vanilla JS 库**: 如`...

    几款js日期插件, 非常漂亮

    它们都可以通过简单的API调用来实现定制,以满足各种复杂的日期和时间选择场景。在实际应用中,可以考虑插件的性能、可定制性、浏览器兼容性和社区支持等因素,以确保选择的插件能满足项目的需求并提供良好的用户...

    js日期控件及使用方法

    这个对象提供了丰富的属性(如`getFullYear()`、`getMonth()`、`getDate()`等)和方法(如`getFullYear()`、`setFullYear()`、`toLocaleString()`等),使得处理日期变得简单。 2. **自定义日期控件** 在HTML中,...

    js日期选择器

    JavaScript日期选择器是一种常见的网页交互元素,用于帮助用户在网页上方便地选取日期。它通常以日历形式呈现,提供友好的用户界面,使得输入日期变得更加直观和简单。在前端开发中,尤其对于需要用户输入特定日期的...

    js日期控件封装

    "js日期控件封装"是一个已经预先编写的JavaScript库,它简化了在网页中添加日期选择功能的过程。这个控件的特点是易于集成,只需简单引用就能在项目中使用,并且样式可以根据开发者的需求进行自定义,以匹配网站的...

Global site tag (gtag.js) - Google Analytics