JavaScript自定义DateDiff函数(兼容所有浏览器)


Posted in Javascript onMarch 01, 2012
<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 scroll事件实现监控滚动条分页示例
Apr 04 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
Jun 20 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
jqGrid中文文档之选项设置
Dec 02 Javascript
node.js中 stream使用教程
Aug 28 Javascript
浅谈JS使用[ ]来访问对象属性
Sep 21 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
Nov 03 Javascript
vue.js移动数组位置,同时更新视图的方法
Mar 08 Javascript
angular 数据绑定之[]和{{}}的区别
Sep 25 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
Oct 29 Javascript
Vue.js组件props数据验证实现详解
Oct 19 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 Javascript
JavaScript版DateAdd和DateDiff函数代码
Mar 01 #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
You might like
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
浅谈php的优缺点
2015/07/14 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP使用file_get_contents发送http请求功能简单示例
2018/04/29 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
2020/04/06 PHP
JavaScript 模仿vbs中的 DateAdd() 函数的代码
2007/08/13 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
JavaScript中省略元素对数组长度的影响
2016/10/26 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
JS浏览器BOM常见操作实例详解
2020/04/27 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
pytorch使用 to 进行类型转换方式
2020/01/08 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
pycharm 代码自动补全的实现方法(图文)
2020/09/18 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
Gap英国官网:Gap UK
2018/07/18 全球购物
Timberland俄罗斯官方网上商店:全球领先的户外品牌
2020/03/15 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
专科毕业生自我鉴定
2013/12/01 职场文书
实习生自我鉴定范文
2013/12/05 职场文书
二手书店创业计划书
2014/01/16 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
励志演讲稿大全
2014/08/21 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
php远程请求CURL案例(爬虫、保存登录状态)
2021/04/01 PHP