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取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
THREE.JS入门教程(5)你应当知道的十件事
Jan 24 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
Apr 11 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
js 判断所选时间(或者当前时间)是否在某一时间段的实现代码
Sep 05 Javascript
学习jQuey中的return false
Dec 18 Javascript
JS获取一个未知DIV高度的方法
Aug 09 Javascript
Vue实现自带的过滤器实例
Mar 09 Javascript
react实现菜单权限控制的方法
Dec 11 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
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
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
WAF的正确bypass
2017/01/05 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
php合并数组并保留键值的实现方法
2018/03/12 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
网页右侧悬浮滚动在线qq客服代码示例
2014/04/28 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
javascript实现回车键提交表单方法总结
2015/01/10 Javascript
jquery实现公告翻滚效果
2015/02/27 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
jQuery插件Validation快速完成表单验证的方式
2016/07/28 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
JS实现Ajax的方法分析
2016/12/20 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
监听element-ui table滚动事件的方法
2019/03/26 Javascript
JavaScript高阶教程之“==”隐藏下的类型转换
2019/04/11 Javascript
小程序:授权、登录、session_key、unionId的详解
2019/05/15 Javascript
jquery.pager.js分页实现详解
2019/07/29 jQuery
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
python数组复制拷贝的实现方法
2015/06/09 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python如何定义有可选参数的元类
2020/07/31 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
管理学专业个人求职信范文
2013/09/21 职场文书
师德模范事迹材料
2014/06/03 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
住房抵押登记委托书
2014/09/27 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书
java实现对Hadoop的操作
2021/07/01 Java/Android
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
Python创建SQL数据库流程逐步讲解
2022/09/23 Python