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 相关文章推荐
location.search在客户端获取Url参数的方法
Jun 08 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
jquery ready(fn)事件使用介绍
Aug 21 Javascript
javascript图片预加载实例分析
Jul 16 Javascript
纯javascript制作日历控件
Jul 17 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
Oct 12 Javascript
Node.js批量给图片加水印的方法
Nov 15 Javascript
JavaScript交换两个变量值的七种解决方案
Dec 01 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 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数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
ES6 javascript的异步操作实例详解
2017/10/30 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
2018/03/06 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
宝塔面板成功部署Django项目流程(图文)
2020/06/22 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
餐饮业经理竞聘演讲稿
2014/01/14 职场文书
学生出入校管理制度
2014/01/16 职场文书
迎八一活动主题
2014/01/31 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
物理研修随笔感言
2014/02/14 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
党员先进事迹材料
2014/12/19 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
国家助学金受助感言
2015/08/01 职场文书
2015年党务工作者个人工作总结
2015/10/22 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript