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 相关文章推荐
两种简单实现菜单高亮显示的JS类代码
Jun 27 Javascript
JS代码优化技巧之通俗版(减少js体积)
Dec 23 Javascript
JQuery触发radio或checkbox的change事件
Dec 18 Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
Jul 10 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 Javascript
微信小程序 教程之WXML
Oct 18 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
Aug 19 Javascript
实例分析js事件循环机制
Dec 13 Javascript
vue-rx的初步使用教程
Sep 21 Javascript
解决layui页面按钮点击无反应,也不报错的问题
Sep 29 Javascript
JS array数组检测方式解析
May 19 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 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
php使用curl打开https网站的方法
2015/06/17 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
js有关元素内容操作小结
2011/12/20 Javascript
js对象的复制继承实例
2015/01/10 Javascript
修改Jquery Dialog 位置的实现方法
2016/08/26 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
vue+node+webpack环境搭建教程
2017/11/05 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
30分钟用Node.js构建一个API服务器的步骤详解
2019/05/24 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
Python生成随机密码
2015/03/10 Python
python变量不能以数字打头详解
2016/07/06 Python
Python表示矩阵的方法分析
2017/05/26 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python针对excel的操作技巧
2018/03/13 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
浅谈python 读excel数值为浮点型的问题
2018/12/25 Python
Python在Matplotlib图中显示中文字体的操作方法
2019/07/29 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
Python 如何批量更新已安装的库
2020/05/26 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
毕业生欢送会主持词
2014/03/31 职场文书
工会工作先进事迹
2014/08/18 职场文书
运动会加油稿30字
2015/07/21 职场文书
离婚民事起诉状
2015/08/03 职场文书
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python