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 相关文章推荐
JavaScript 事件记录使用说明
Oct 20 Javascript
jquery判断浏览器类型的代码
Nov 05 Javascript
js如何取消事件冒泡
Sep 23 Javascript
JavaScript实现Flash炫光波动特效
May 14 Javascript
详谈javascript异步编程
Feb 21 Javascript
玩转JavaScript OOP - 类的实现详解
Jun 08 Javascript
js与applet相互调用的方法
Jun 22 Javascript
AngularJS $injector 依赖注入详解
Sep 14 Javascript
基于javascript实现按圆形排列DIV元素(一)
Dec 02 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
Mar 05 Javascript
微信小程序使用swiper组件实现类3D轮播图
Aug 29 Javascript
基于VSCode调试网页JavaScript代码过程详解
Jul 20 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注释和去除空格函数分享
2014/03/13 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
ES6 Promise对象概念与用法分析
2017/04/01 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
Python调用C++程序的方法详解
2017/01/24 Python
Python中进程和线程的区别详解
2017/10/29 Python
python3大文件解压和基本操作
2017/12/15 Python
python实现文字版扫雷
2020/04/24 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
英国伦敦的睡衣品牌:Asceno
2019/10/06 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
大一学生职业生涯规划
2014/03/11 职场文书
安全演讲稿大全
2014/05/09 职场文书
个人四风问题整改措施
2014/10/24 职场文书
2016年寒假社会实践活动总结
2015/10/10 职场文书
导游词之山东八大关
2019/12/18 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python