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 闭包在封装函数时的简单分析
Nov 28 Javascript
javascript parseInt与Number函数的区别
Jan 21 Javascript
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
JS弹出窗口代码大全(详细整理)
Dec 21 Javascript
JavaScript实现twitter puddles算法实例
Dec 06 Javascript
使用js画图之圆、弧、扇形
Jan 12 Javascript
JS实现文字掉落效果的方法
May 06 Javascript
jQuery.prop() 使用详解
Jul 19 Javascript
jQuery使用animate创建动画用法实例
Aug 07 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
Feb 05 Javascript
JavaScript实现窗口抖动效果
Oct 19 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
Nov 01 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个人网站架设连环讲(二)
2006/10/09 PHP
php Rename 更改文件、文件夹名称
2011/05/24 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
在Python的Django框架中加载模版的方法
2015/07/16 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
python 美化输出信息的实例
2018/10/15 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
Python语言异常处理测试过程解析
2020/01/08 Python
Tensorflow训练模型越来越慢的2种解决方案
2020/02/07 Python
python使用matplotlib:subplot绘制多个子图的示例
2020/09/24 Python
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
访谈节目策划方案
2014/05/15 职场文书
2015年实习单位评语
2015/03/25 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android