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 星级评分效果(手写)
Dec 24 Javascript
JS中令人发指的valueOf方法介绍
Feb 22 Javascript
javascript调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
Nov 02 Javascript
JavaScript数据结构与算法之集合(Set)
Jan 29 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 Javascript
Bootstrap Table使用心得总结
Nov 29 Javascript
Vue.JS项目中5个经典Vuex插件
Nov 28 Javascript
JS使用Date对象实时显示当前系统时间简单示例
Aug 23 Javascript
浅谈一种让小程序支持JSX语法的新思路
Jun 16 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 Javascript
解决Element中el-date-picker组件不回填的情况
Nov 07 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的安全
2006/10/09 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
PHP钩子实现方法解析
2019/05/21 PHP
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
AngularJS ng-mousedown 指令
2016/08/02 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
2016/08/16 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
JavaScript对象访问器Getter及Setter原理解析
2020/12/08 Javascript
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python 3.5实现检测路由器流量并写入txt的方法实例
2017/12/17 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
利用 CSS3 实现的无缝轮播功能代码
2017/09/25 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
个人自我剖析材料
2014/02/07 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
英语教师个人工作总结
2015/02/09 职场文书
甲午风云观后感
2015/06/02 职场文书
秋收起义观后感
2015/06/11 职场文书
2019送给家人们的中秋节祝福语
2019/08/15 职场文书
为什么MySQL选择Repeatable Read作为默认隔离级别
2021/07/26 MySQL
js中Object.create实例用法详解
2021/10/05 Javascript
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS