`
zjiaohuang
  • 浏览: 2528 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

js 日期比较

 
阅读更多
项目中输入框日期格式不统一,两个日期比较不能按一个日期格式比较。这个js方法虽然繁琐写,但是包括的日期格式比较多,能够适应大多数日期比较。

/**
 * 判断是不是一个正确的时间 yyyy-MM-dd
 * @param {String} str
 * @return {Date}
 */
Date.isSimpleDate = function(str){
	var   reg   =   /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/;
    var r = str.match(reg);
  	if(r==null)return   null;
  	var   d=   new   Date(r[1], r[3]-1,r[4]);
 	var   newStr=d.getFullYear() + "-";
	newStr+=(((d.getMonth()+1)<10&&r[3].length>1)?('0'+(d.getMonth()+1)):(d.getMonth()+1)) + "-" ;
	newStr+=(((d.getDate())<10 && r[4].length>1)?('0'+d.getDate()):d.getDate());
  	if(newStr==str){
		return d;
	}else{
		return null;
	}
}
/**
 * 判断是不是一个正确的时间类型 yyyy-MM-dd hh
 * @param {Object} str
 */
Date.isDateHH = function(str){
	var   reg   =   /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2})$/;
    var r = str.match(reg);
  	if(r==null)return   null;
  	var   d=   new   Date(r[1], r[3]-1,r[4],r[5]);
 	var   newStr=d.getFullYear() + "-";
	newStr+=(((d.getMonth()+1)<10&&r[3].length>1)?('0'+(d.getMonth()+1)):(d.getMonth()+1)) + "-" ;
	newStr+=(((d.getDate())<10 && r[4].length>1)?('0'+d.getDate()):d.getDate()) + " ";
	newStr+=((d.getHours()<10&&r[5].length>1)?('0'+d.getHours()):d.getHours());
  	if(newStr==str){
		return d;
	}else{
		return null;
	}
}
/**
 * 判断是不是一个正确的时间类型 yyyy-MM-dd hh:mm
 * @param {String} str
 */
Date.isDateHHMM = function(str){
	var   reg   =   /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2})$/;
	var   r   =   str.match(reg);
	if(r==null)return   null;
	var   d=   new   Date(r[1], r[3]-1,r[4],r[5],r[6]);
	var   newStr=d.getFullYear() + "-";
	newStr+=(((d.getMonth()+1)<10&&r[3].length>1)?('0'+(d.getMonth()+1)):(d.getMonth()+1)) + "-" ;
	newStr+=(((d.getDate())<10 && r[4].length>1)?('0'+d.getDate()):d.getDate()) + " ";
	newStr += ((d.getHours()<10&&r[5].length>1)?('0'+d.getHours()):d.getHours())+":";
	newStr += ((d.getMinutes()<10&&r[6].length>1)?('0'+d.getMinutes()):d.getMinutes());
	if(newStr==str){
		return d;
	}else{
		return null;
	}
}
/**
 * 判断是不是一个正确的时间类型 yyyy-MM-dd hh:mm:ss
 * @param {String} str
 */
Date.isDateHHMMSS = function(str){
	var   reg   =   /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
	var   r   =   str.match(reg);
	if(r==null)return   null;
	var   d=   new   Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
	var   newStr=d.getFullYear() + "-";
	newStr+=(((d.getMonth()+1)<10&&r[3].length>1)?('0'+(d.getMonth()+1)):(d.getMonth()+1)) + "-" ;
	newStr+=(((d.getDate())<10 && r[4].length>1)?('0'+d.getDate()):d.getDate()) + " ";
	newStr += (((d.getHours()<10&&r[5].length>1)?('0'+d.getHours()):d.getHours()))+":";
	newStr += (((d.getMinutes()<10&&r[6].length>1)?('0'+d.getMinutes()):d.getMinutes())) + ":";
	newStr += ((d.getSeconds()<10&&r[7].length>1)?('0'+d.getSeconds()):d.getSeconds());
	if(newStr==str){
		return d;
	}else{
		return null;
	}
}
/***
 * 判断是日期1是不是在日期2后面
 * @param {Date/String} d1
 * @param {Date/String} d2
 * @return {Boolean} true 小于日期2
 */
Date.before = function(d1,d2){
	if((typeof d1 == 'object' && d1.constructor == Date) && (typeof d2 == 'object' && d2.constructor == Date)){
		if(d1<=d2){
			return true;
		}else{
			return false;
		}
	}else if((typeof d1 == 'string' && d1.constructor == String) && (typeof d2 == 'string' && d2.constructor == String)){

		var date1 = Date.isSimpleDate(d1)!=null?Date.isSimpleDate(d1):Date.isDateHH(d1);
		date1 = date1!=null?date1:Date.isDateHHMM(d1);
		date1 = date1!=null?date1:Date.isDateHHMMSS(d1);
		var date2 = Date.isSimpleDate(d2)!=null?Date.isSimpleDate(d2):Date.isDateHH(d2);
		date2 = date2!=null?date2:Date.isDateHHMM(d2)
		date2 = date2!=null?date2:Date.isDateHHMMSS(d2);
		if(date1==null||date2==null){
			alert("日期格式不正确!");
			return false;
		}
		if(date1<=date2){
			return true;
		}else{
			return false;
		}
	}else if((typeof d1 == 'string' && d1.constructor == String) && (typeof d2 == 'object' && d2.constructor == Date)){

		var date1 = Date.isSimpleDate(d1)!=null?Date.isSimpleDate(d1):Date.isDateHH(d1);
		date1 = date1!=null?date1:Date.isDateHHMM(d1);
		date1 = date1!=null?date1:Date.isDateHHMMSS(d1);
		if(date1==null||d2==null){
			alert("日期格式不正确!");
			return false;
		}
		if(date1<=d2){
			return true;
		}else{
			return false;
		}
	}else if((typeof d1 == 'object' && d1.constructor == Date) && (typeof d2 == 'string' && d2.constructor == String)){

		var date2 = Date.isSimpleDate(d2)!=null?Date.isSimpleDate(d2):Date.isDateHH(d2);
		date2 = date2!=null?date2:Date.isDateHHMM(d2)
		date2 = date2!=null?date2:Date.isDateHHMMSS(d2);
		if(d1==null||date2==null){
			alert("日期格式不正确!");
			return false;
		}
		if(d1<=date2){
			return true;
		}else{
			return false;
		}
	}else{
		alert("无法判断输入数据类型!");
		return false;
	}
}
分享到:
评论

相关推荐

    js 日期比较 b/s开发

    ### 核心知识点:JS日期比较方法 #### 函数概述 给定的代码片段定义了一个名为`compare_date`的函数,其主要目的是比较两个日期字符串,返回一个布尔值,指示第一个日期是否晚于第二个日期。此函数的设计考虑了日期...

    js日期带时间的比较

    js日期带时间的比较,js日期带时间的比较

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

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

    js中日期的比较

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

    JQ JS javascript 日期多选控件

    Date对象允许我们创建、格式化和比较日期。例如,创建一个新日期实例可以这样写: ```javascript var currentDate = new Date(); ``` 二、jQuery与日期插件 为了创建用户友好的日期选择控件,我们可以利用jQuery...

    javascript 日期数字文本格式化

    在实际应用中,JavaScript的日期格式化可以使用多种方式实现,包括但不限于自定义函数、使用内置`Date`对象的`toLocaleString`或`toISOString`方法,或者利用第三方库,如Moment.js或date-fns。这些库提供了丰富的...

    js日期时间格式化日期时间格式化

    js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化

    js日期时间控件 JavaScriptjs日期时间控件 jsp

    JavaScript日期时间控件是网页开发中常用的一种组件,主要用于用户在网页上选择或输入日期和时间。在JavaScript中,处理日期和时间的核心对象是`Date`。本篇将深入探讨JavaScript日期时间控件的实现原理、使用方法...

    js日期时间比较大小

    日期格式年月日(yyyy-mm-dd) 时间格式时分(hh:mm)

    js(javascript) 日期控件

    总的来说,JS日期控件涉及了JavaScript的基础知识,如对象、事件、DOM操作,以及一些高级特性,如国际化和性能优化。理解并掌握这些知识点,能帮助开发者构建出功能完备、用户体验优秀的日期选择功能。

    js时间日期输入框

    `WdatePicker`是一款功能丰富的JavaScript日期选择插件,由中国Web开发社区开发,支持多种日期格式,提供多种语言环境,并且具有日期计算、日期限制、日期校验等功能。其使用非常简便,只需要在HTML中添加一个`...

    js日期选择插件

    JavaScript日期选择插件是网页开发中常用的一种工具,主要用于用户在网页上方便地选择日期,常见于表单输入、日历应用以及各种需要处理日期的交互场景。在本压缩包中,你将找到一个js日期插件,它允许开发者自定义...

    网页日期选择js文件

    "网页日期选择js文件" 提供的就是一个JavaScript实现的日期选择功能,使得开发者无需编写复杂的代码就能在网页上添加这种交互式元素。 JavaScript是一种在客户端运行的脚本语言,它对于网页动态交互起着至关重要的...

    js日期选择代码.zip

    4. **日期比较**:`Date`对象可以进行比较,如`myDate1 ,这将判断myDate1是否早于myDate2。 5. **时间戳**:`getTime()`方法返回从1970年1月1日以来的毫秒数,这在进行日期计算时非常有用。 6. **日期增加/减少**...

    JS日期时间选择器,js原生,任何地方可用

    首先,"dol-datepicker.js" 文件很可能是这个日期时间选择器的主要实现部分,它包含了JavaScript代码,用于创建交互式的日期时间选择界面以及处理用户的选取行为。JavaScript的Date对象是处理日期和时间的基础,我们...

    JS时间日期源码集锦

    在本“JS时间日期源码集锦”中,我们将会探讨JavaScript处理时间日期的各种方法和技巧,以及如何创建炫酷的时间日期相关特效。 一、JavaScript中的日期对象 在JavaScript中,Date对象是内置的构造函数,可以用来...

    选择日期控件(js封装类,javascript,选择日期,文本框选择日期,控件)

    选择日期控件(js封装类,javascript,选择日期,文本框选择日期,控件)

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

    以下是对几款优秀的JavaScript日期插件的详细说明,这些插件能够帮助你精确到日期、小时、分钟甚至秒,提升你的项目质量。 1. **jQuery UI Datepicker** jQuery UI的Datepicker是广泛使用的日期选择器插件,它可以...

    js日期控件及使用方法

    这篇内容将深入讲解JavaScript日期控件及其使用方法,结合提供的`jsDate.html`和`date.js`文件,我们将学习如何创建和自定义这样的控件。 1. **内置JavaScript日期对象** JavaScript提供了一个内置的`Date`对象,...

Global site tag (gtag.js) - Google Analytics