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 剧场版 你必须知道的javascript
May 27 Javascript
使用jQuery模板来展现json数据的代码
Oct 22 Javascript
实现局部遮罩与关闭原理及代码
Feb 04 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
JavaScript学习笔记之Function对象
Jan 22 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
May 18 Javascript
JavaScript动态检验密码强度的实现方法
Nov 09 Javascript
jQury Ajax使用Token验证身份实例代码
Sep 22 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
May 17 Javascript
vue自定义正在加载动画的例子
Nov 14 Javascript
Element-UI+Vue模式使用总结
Jan 02 Javascript
vue3为什么要用proxy替代defineProperty
Oct 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使用Mysql事务实例解析
2014/09/08 PHP
php读取目录及子目录下所有文件名的方法
2014/10/20 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
javascript函数自动执行常用方法汇总
2016/03/28 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
JavaScript实现获取select下拉框中第一个值的方法
2018/02/06 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
在create-react-app中使用css modules的示例代码
2018/07/31 Javascript
electron实现静默打印的示例代码
2019/08/12 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
Python使用filetype精确判断文件类型
2017/07/02 Python
Flask框架Flask-Login用法分析
2018/07/23 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
Python识别html主要文本框过程解析
2020/02/18 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
详解Python高阶函数
2020/08/15 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
详解HTML5中的拖放事件(Drag 和 drop)
2016/11/14 HTML / CSS
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
刚毕业大学生自荐信范文
2014/02/20 职场文书
协议书怎么写
2014/04/21 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
环境建议书
2015/02/04 职场文书
工程质检员岗位职责
2015/04/08 职场文书
2015年城乡环境综合治理工作总结
2015/07/24 职场文书
2016寒假假期总结
2015/10/10 职场文书
音乐研修感悟
2015/11/18 职场文书
员工升职自我评价
2019/03/26 职场文书
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL