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 相关文章推荐
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
详谈javascript中DOM的基本属性
Feb 26 Javascript
JavaScript检测上传文件大小的方法
Jul 22 Javascript
js实现点击获取验证码倒计时效果
Jan 28 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
node.js express安装及示例网站搭建方法(分享)
Aug 22 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
解析javascript图片懒加载与预加载的分析总结
Oct 27 Javascript
p5.js入门教程之图片加载
Mar 20 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
javascript实现留言板功能
Feb 08 Javascript
javascript实现滚动条效果
Mar 24 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 class中public,private,protected的区别以及实例分析
2013/06/18 PHP
解析PHP中$_FILES的使用以及注意事项
2013/07/05 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
一样的table?不一样的table(可编辑状态table)
2012/09/19 Javascript
点击隐藏页面左栏或右栏实现js代码
2013/04/01 Javascript
jQuery动态添加删除select项(实现代码)
2013/09/03 Javascript
全面了解javascript三元运算符
2016/06/27 Javascript
基于jQuery实现顶部导航栏功能
2016/12/27 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
微信小程序 图片宽度自适应的实现
2017/04/06 Javascript
JavaScript实现的浏览器下载文件的方法
2017/08/09 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
bootstrap 路径导航 分页 进度条的实例代码
2018/08/06 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
Vue2.0生命周期的理解
2018/08/20 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python 爬虫 批量获取代理ip的实例代码
2018/05/22 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
大学生大二自我鉴定
2013/10/28 职场文书
生物技术专业求职信
2014/06/10 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书