javascript时间比较
来源:互联网 发布:信用卡和淘宝有合作 编辑:程序博客网 时间:2024/06/07 01:10
一、需求
表单中的开始时间、结束时间(这里的时间精确到分)的需满足:
1.开始时间、结束时间不为空
2.开始时间大于当前系统时间,结束时间大于开始时间
3.开始时间,结束时间间隔不能超过1天
二、js插件:My97DatePicker
这里主要用它来显示时间和选择时间。该插件可以用来对时间进行比较,但这里就使用javascript进行时间比较
三、代码
结构如下:js下放了插件包My97DatePicker,和时间验证代码dateTest.js。web目录下放了展示页面dateTest.html
展示页面dateTest.html
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script> <script type="text/javascript" src="js/dateTest.js"></script></head><body> <form id="dateTest" onsubmit="return submitFunc();"> 开始时间:<input id="startTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',realDateFmt:'yyyy-MM-dd HH:mm'})"/> 结束时间:<input id="endTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',realDateFmt:'yyyy-MM-dd HH:mm'})"/> <br/> <input id="submit" type="submit" value="提交"/> </form></body></html>
时间验证代码dateTest.js
function submitFunc() { flag = true; // 填的时间不能为空 var startTime = document.getElementById("startTime"); if(startTime.value == null || startTime.value == "") { alert("开始时间不能为空!"); flag = false; } var endTime = document.getElementById("endTime"); if(endTime.value == null || endTime.value == "") { alert("结束时间不能为空!"); flag = false; } var now = new Date(); var t1 = new Date(Date.parse(startTime.value)); var t2 = new Date(Date.parse(endTime.value)); // 对时间进行验证:1.开始时间大于当前系统时间,结束时间大于开始时间 // 2.开始时间,结束时间间隔不能超过1天 if(flag) { if(t1 > now && t2 > t1) { // 开始时间,结束时间间隔不能超过1天 if(getDifDays(t1, t2) <= 1) { // 填写的时间符合要求 alert("符合要求,可以提交"); } else { alert("开始时间、结束时间,\n时间间隔不能超过1天"); flag = false; } } else { alert("开始时间须大于当前时间,\n且结束时间须大于开始时间!"); flag = false; } } return flag;}// 获取相差的天数function getDifDays(date1, date2) { // 获取传入时间距离1970年的毫秒数 var t1 = date1.getTime(); var t2 = date2.getTime(); var difDays = (t2 - t1)/(1000*60*60*24); return difDays;}
更新:以上代码(Date的parse函数)在ie下无法获取到t1,t2,导致时间判断出问题。使用正则表达式,
将
var t1 = new Date(Date.parse(startTime.value));var t2 = new Date(Date.parse(endTime.value));
改为
var t1 = new Date(estimateStartTime.value.replace(/-/g,"/"));var t2 = new Date(estimateEndTime.value.replace(/-/g,"/"));
四、补充
如果要使用My97DatePicker对用户键入的时间进行限制的话,无法将需求中的3条同时在页面上实现(经过自己多次尝试,发现可以将第2、3条结合起来),第1条就自己写 js判断吧。
第2条(开始时间大于当前系统时间,结束时间大于开始时间)单独实现如下:
(参考官方文档中动态限制的示例4-2-1 只能选择今天以前的日期(包括今天))
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script></head><body> <form id="dateTest"> 开始时间:<input id="startTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'%y-%M-%d %H:{%m+1}:%s'})"/> 结束时间:<input id="endTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'#F{$dp.$D(\'startTime\',{m:1});}'})"/> <br/> <input id="submit" type="submit" value="提交"/> </form></body></html>
第3条(开始时间,结束时间间隔不能超过1天)单独实现如下:
(参考官方文档中脚本自定义限制的示例4-3-2 前面的日期+3天 不能大于 后面的日期)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script></head><body> <form id="dateTest"> 开始时间:<input id="startTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'#F{$dp.$D(\'endTime\',{d:-1});}'})"/> 结束时间:<input id="endTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',maxDate:'#F{$dp.$D(\'startTime\',{d:1});}'})"/> <br/> <input id="submit" type="submit" value="提交"/> </form></body></html>
将第2、3条的实现结合起来如下(参考官方文档中脚本自定义限制的示例4-3-1 前面的日期不能大于后面的日期且两个日期都不能大于 2020-10-01):
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script type="text/javascript" src="js/My97DatePicker/WdatePicker.js"></script></head><body> <form id="dateTest"> 开始时间:<input id="startTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'#F{$dp.$D(\'endTime\',{d:-1})||\'%y-%M-%d %H:{%m+1}:%s\'}'})"/> 结束时间:<input id="endTime" type="text" class="Wdate" readonly="readonly" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',minDate:'#F{$dp.$D(\'startTime\',{m:1})||\'%y-%M-%d %H:{%m+1}:%s\'}',maxDate:'#F{$dp.$D(\'startTime\',{d:1});}'})"/> <br/> <input id="submit" type="submit" value="提交"/> </form></body></html>
阅读全文
0 0
- JavaScript 时间比较
- Javascript时间比较
- javascript 时间的比较
- javascript比较时间大小
- javascript 比较时间大小
- javascript时间比较
- javascript 中时间的比较
- javascript中的字符串时间比较
- 通过Javascript比较时间大小
- javascript比较两个时间大小
- javascript的时间比较function
- javascript中的时间大小比较
- javascript中比较时间大小
- javascript日期、时间比较函数
- JavaScript 时间简单比较大小
- javascript 比较开始时间和结束时间
- JavaScript 获取当前时间,时间比较,时间转化
- javascript 怎样比较日期/时间的大小
- (人脸识别2-4)——关于CNN卷积神经网络
- POJ-2368-Buttons [找规律]
- Android源码研究环境搭建[6]调试系统源代码
- IO流(RandomAccessFile随机访问流)
- linux安装火狐浏览器
- javascript时间比较
- RAML文件的Java解析器raml-java-parser概述
- 2015-2016 ACM-ICPC Southwestern Europe Regional Contest (SWERC 15)训练总结【7/10】
- 美团js面试题
- 三种左边定宽,右边自适应布局方式
- Java 链接mysql数据库操作
- 凑钱
- ORACLE错误代码集合
- IO流(SequenceInputStream合并流)