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 相关文章推荐
基于jQuery实现弹出可关闭遮罩提示框实例代码
Jul 18 Javascript
浅谈js中字符和数组一些基本算法题
Aug 15 Javascript
微信小程序实现弹出菜单
Jul 19 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
Oct 09 Javascript
如何安装控制器JavaScript生成插件详解
Oct 21 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
JavaScript中的类型检查
Feb 03 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 04 Javascript
基于javascript处理二进制图片流过程详解
Jun 08 Javascript
Vue如何清空对象
Mar 03 Vue.js
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图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
javascript concat数组累加 示例
2009/09/03 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
IE中getElementsByName()对有些元素无效的解决方案
2014/09/28 Javascript
jquery插件ajaxupload实现文件上传操作
2015/12/09 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
2016/06/15 Javascript
jQuery设计思想
2017/03/07 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
小程序实现图片预览裁剪插件
2019/11/22 Javascript
vue el-table实现行内编辑功能
2019/12/11 Javascript
js实现经典贪吃蛇小游戏
2020/03/19 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
django+js+ajax实现刷新页面的方法
2017/05/22 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
Python列表如何更新值
2020/05/27 Python
解锁canvas导出图片跨域的N种姿势小结
2019/01/24 HTML / CSS
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
美国转售二手商品的电子商务平台:BLINQ
2018/12/13 全球购物
员工晚婚的请假条
2014/02/08 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
一位农村小子的自荐信
2014/04/07 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL
python pygame 开发五子棋双人对弈
2022/05/02 Python