思路:比较 2016-06-26 11:25 跟 2016-08-26 11:50
开始思路是想通过比较数字来比较两者大小:
即:20160626 跟 20160826 比较
1125 跟 1150 比较
后来发现:如果时间相同的时候特别难比较,还会出错。(有兴趣的朋友可以试一下。)
最后换用了,先把日期时间格式减去符号,然后换成new Date()的格式,然后再比较.
<script type="text/javascript">
var fields= [ //为了方便取出名字相似的id
"field33655", //fields[0]开始日期
"field33657", //fields[1]开始时间
"field33656", //fields[2]结束日期
"field33658" //fields[3]结束时间
];
//文档加载是执行的js
jQuery(document).ready(function(){
console.log("进入流程!");
//数据效验
checkCustomize = function (){
return calculateDateFields();//true提交流程,false取消提交
};
});
//计算日期
function calculateDateFields(){
var startDate=jQuery('#'+fields[0]).val();//开始日期
var arr=startDate.split("-");
var starttime = new Date(arr[0], arr[1], arr[2]);
var starttimes = starttime.getTime();
var endDate=jQuery('#'+fields[2]).val();//结束日期
var arrs=endDate.split("-");
var lktime = new Date(arrs[0], arrs[1], arrs[2]);
var lktimes = lktime.getTime();
var now= new Date();
var date=now.getFullYear()+"-"+((now.getMonth()+1)<10?"0":"")+(now.getMonth()+1)+"-"+(now.getDate() <10?"0":"")+now.getDate()
var arrss=date.split("-");
var nowtime= new Date(arrss[0], arrss[1], arrss[2]);
var nowtimes= nowtime.getTime();
if(starttimes >nowtimes&&lktimes>nowtimes){
if (starttimes >lktimes) {
alert('开始时间大于离开时间,请检查');
jQuery('#'+fields[2]).val('');//清空结束日期
jQuery('#'+fields[2]+'span').text('');//清空结束日期
return false;
}
else if(starttimes ==lktimes){
if(calculateTimeFields()){
return true;
}
else{
jQuery('#'+fields[3]).val('');//清空结束时间
jQuery('#'+fields[3]+'span').text('');//清空结束时间
return false;
}
}
else{
if(calculateTimeFields()){
return true;
}else{
alert("开始时间不能大于结束时间");
jQuery('#'+fields[3]).val('');//清空结束时间
jQuery('#'+fields[3]+'span').text('');//清空结束时间
return false;
}
}
}else if(lktimes>nowtimes&&starttimes<=nowtimes){
alert("请假开始日期要比当前系统的日期晚,请检查");
}else if(lktimes<=nowtimes&&starttimes>nowtimes){
alert("请假结束日期要比当前系统的日期晚,请检查");
}
else{
alert("请假开始日期与结束日期要比当前系统的日期晚,请检查");
}
}
//计算时间
function calculateTimeFields(){
console.log("进入函数2");
var checkresult= [0,0];
var beginTime = jQuery('#'+fields[0]).val()+ jQuery('#'+fields[1]).val();
var endTime= jQuery('#'+fields[2]).val()+ jQuery('#'+fields[3]).val();
var beginTimes=beginTime .substring(0,10).split('-');
var endTimes = endTime.substring(0, 10).split('-');
beginTime = beginTimes[1] + '-' + beginTimes[2] + '-' + beginTimes[0] + ' ' + beginTime.substring(10, 19);
endTime = endTimes[1] + '-' + endTimes[2] + '-' + endTimes[0] + ' ' + endTime.substring(10, 19);
var a = (Date.parse(endTime) - Date.parse(beginTime)) / 3600 / 1000;
if (a < 0) {
alert("开始时间不能大于结束时间");
return false;
} else if (a > 0) {
return true;
} else if (a == 0) {
alert("开始时间不能与结束时间相等!");
return false;
} else {
return 'exception'
}
}
</script>
详情可参考: <转>
js日期比较(yyyy-mm-dd)
function duibi(a, b) {
var arr = a.split("-");
var starttime = new Date(arr[0], arr[1], arr[2]);
var starttimes = starttime.getTime();
var arrs = b.split("-");
var lktime = new Date(arrs[0], arrs[1], arrs[2]);
var lktimes = lktime.getTime();
if (starttimes >= lktimes) {
alert('开始时间大于离开时间,请检查');
return false;
}
else
return true;
}
js时间比较(yyyy-mm-dd hh:mi:ss)
function comptime() {
var beginTime = "2009-09-21 00:00:00";
var endTime = "2009-09-21 00:00:01";
var beginTimes = beginTime.substring(0, 10).split('-');
var endTimes = endTime.substring(0, 10).split('-');
beginTime = beginTimes[1] + '-' + beginTimes[2] + '-' + beginTimes[0] + ' ' + beginTime.substring(10, 19);
endTime = endTimes[1] + '-' + endTimes[2] + '-' + endTimes[0] + ' ' + endTime.substring(10, 19);
alert(beginTime + "aaa" + endTime);
alert(Date.parse(endTime));
alert(Date.parse(beginTime));
var a = (Date.parse(endTime) - Date.parse(beginTime)) / 3600 / 1000;
if (a < 0) {
alert("endTime小!");
} else if (a > 0) {
alert("endTime大!");
} else if (a == 0) {
alert("时间相等!");
} else {
return 'exception'
}
}