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接收get传递的值的代码
Nov 30 Javascript
Javascript图像处理—为矩阵添加常用方法
Dec 27 Javascript
javascript中的self和this用法小结
Feb 08 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
Javascript的表单验证-提交表单
Mar 18 Javascript
JSON字符串转换JSONObject和JSONArray的方法
Jun 03 Javascript
整理关于Bootstrap列表组的慕课笔记
Mar 29 Javascript
React Native之ListView实现九宫格效果的示例
Aug 02 Javascript
微信小程序适配iphoneX的实现方法
Sep 18 Javascript
vue发送ajax请求详解
Oct 09 Javascript
vue中使用router全局守卫实现页面拦截的示例
Oct 23 Javascript
从原生JavaScript到React深入理解
Jul 23 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在Web开发领域的优势
2006/10/09 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
2010/05/15 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
JS 实现BASE64_ENCODE和BASE64_DECODE(实例代码)
2013/11/13 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
有关Promises异步问题详解
2015/11/13 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
jQuery dateRangePicker插件使用方法详解
2017/07/28 jQuery
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
python计算两个地址之间的距离方法
2018/06/09 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
Python JSON编解码方式原理详解
2020/01/20 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
jupyter notebook 多行输出实例
2020/04/09 Python
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
开业庆典主持词
2014/03/21 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
员工考勤管理制度
2015/08/06 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书