JavaScript版DateAdd和DateDiff函数代码


Posted in Javascript onMarch 01, 2012

DateAdd函数:

function DateAdd(interval,number,date){ 
switch(interval.toLowerCase()){ 
case "y": return new Date(date.setFullYear(date.getFullYear()+number)); 
case "m": return new Date(date.setMonth(date.getMonth()+number)); 
case "d": return new Date(date.setDate(date.getDate()+number)); 
case "w": return new Date(date.setDate(date.getDate()+7*number)); 
case "h": return new Date(date.setHours(date.getHours()+number)); 
case "n": return new Date(date.setMinutes(date.getMinutes()+number)); 
case "s": return new Date(date.setSeconds(date.getSeconds()+number)); 
case "l": return new Date(date.setMilliseconds(date.getMilliseconds()+number)); 
} 
}

DateDiff函数:
function DateDiff(interval,date1,date2){ 
var long = date2.getTime() - date1.getTime(); //相差毫秒 
switch(interval.toLowerCase()){ 
case "y": return parseInt(date2.getFullYear() - date1.getFullYear()); 
case "m": return parseInt((date2.getFullYear() - date1.getFullYear())*12 + (date2.getMonth()-date1.getMonth())); 
case "d": return parseInt(long/1000/60/60/24); 
case "w": return parseInt(long/1000/60/60/24/7); 
case "h": return parseInt(long/1000/60/60); 
case "n": return parseInt(long/1000/60); 
case "s": return parseInt(long/1000); 
case "l": return parseInt(long); 
} 
}

兼容多浏览器的datediff函数
<script type="text/javascript"> 
function NewDate(str) { 
str = str.split('-'); 
var date = new Date(); 
date.setUTCFullYear(str[0], str[1] - 1, str[2]); 
date.setUTCHours(0, 0, 0, 0); 
return date; 
} 
function TimeCom(dateValue) { 
var newCom; if (dateValue == "") { 
newCom = new Date(); 
} else { 
newCom = NewDate(dateValue); 
} 
this.year = newCom.getYear(); 
this.month = newCom.getMonth() + 1; 
this.day = newCom.getDate(); 
this.hour = newCom.getHours(); 
this.minute = newCom.getMinutes(); 
this.second = newCom.getSeconds(); 
this.msecond = newCom.getMilliseconds(); 
this.week = newCom.getDay(); 
} 
function DateDiff(interval, date1, date2) { 
var TimeCom1 = new TimeCom(date1); 
var TimeCom2 = new TimeCom(date2); 
var result; 
switch (String(interval).toLowerCase()) { 
case "y": 
case "year": 
result = TimeCom1.year - TimeCom2.year; 
break; 
case "m": 
case "month": 
result = (TimeCom1.year - TimeCom2.year) * 12 + (TimeCom1.month - TimeCom2.month); 
break; 
case "d": 
case "day": 
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day)) / (1000 * 60 * 60 * 24)); 
break; 
case "h": 
case "hour": 
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour)) / (1000 * 60 * 60)); 
break; 
case "min": 
case "minute": 
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute)) / (1000 * 60)); 
break; 
case "s": 
case "second": 
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute, TimeCom1.second) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute, TimeCom2.second)) / 1000); 
break; 
case "ms": 
case "msecond": 
result = Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day, TimeCom1.hour, TimeCom1.minute, TimeCom1.second, TimeCom1.msecond) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day, TimeCom2.hour, TimeCom2.minute, TimeCom2.second, TimeCom1.msecond); 
break; 
case "w": 
case "week": 
result = Math.round((Date.UTC(TimeCom1.year, TimeCom1.month - 1, TimeCom1.day) - Date.UTC(TimeCom2.year, TimeCom2.month - 1, TimeCom2.day)) / (1000 * 60 * 60 * 24)) % 7; 
break; 
default: 
result = "invalid"; 
} 
return (result); 
} 
</script>
Javascript 相关文章推荐
Whatever:hover 无需javascript让IE支持丰富伪类
Jun 29 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
Aug 01 Javascript
js中获取事件对象的方法小结
Mar 13 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
RGB和YUV 多媒体编程基础详细介绍
Nov 04 Javascript
详解Vue单元测试case写法
May 24 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
详解Angular-ui-BootStrap组件的解释以及使用
Jul 13 Javascript
js中事件对象和事件委托的介绍
Jan 21 Javascript
vue 实现websocket发送消息并实时接收消息
Dec 09 Javascript
JS实现导航栏楼层特效
Jan 01 Javascript
Element InputNumber 计数器的实现示例
Aug 03 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
Mar 01 #Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
Mar 01 #Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
Feb 27 #Javascript
JavaScript高级程序设计 读书笔记之九 本地对象Array
Feb 27 #Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
Feb 27 #Javascript
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
Feb 27 #Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
Feb 27 #Javascript
You might like
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
PHP图片水印类的封装
2017/07/06 PHP
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
jQuery前台数据获取实现代码
2011/03/16 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
javascript简单比较日期大小的方法
2016/01/05 Javascript
nodejs和C语言插入mysql数据库乱码问题的解决方法
2017/04/14 NodeJs
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
vue结合element-ui使用示例
2019/01/24 Javascript
layui 阻止图片上传的实例(before方法)
2019/09/26 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
利用Python将时间或时间间隔转为ISO 8601格式方法示例
2017/09/05 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
python字符串与url编码的转换实例
2018/05/10 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
python pandas模块基础学习详解
2019/07/03 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
python 常见的排序算法实现汇总
2020/08/21 Python
Python多分支if语句的使用
2020/09/03 Python
celery在python爬虫中定时操作实例讲解
2020/11/27 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
Delphi笔试题
2016/11/14 面试题
教师找工作推荐信
2013/11/23 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
2015年元旦活动总结
2014/05/09 职场文书
美食节策划方案
2014/05/26 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
工作检讨书怎么写
2015/01/23 职场文书
2015年初一班主任工作总结
2015/05/13 职场文书
小学语文教师竞聘演讲稿范文
2019/08/09 职场文书
工厂无线对讲系统解决方案
2022/02/18 无线电
分享几个实用的CSS代码块
2022/06/10 HTML / CSS