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 相关文章推荐
关于JavaScript的with 语句的使用方法
May 09 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
Jul 31 Javascript
js判断设备是否为PC并调整图片大小
Feb 12 Javascript
javacript使用break内层跳出外层循环分析
Jan 12 Javascript
jQuery操作表单常用控件方法小结
Mar 23 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 Javascript
vue制作加载更多功能的正确打开方式
Oct 12 Javascript
详解VUE的状态控制与延时加载刷新
Mar 27 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
Nov 27 Javascript
node.js爬取中关村的在线电瓶车信息
Nov 13 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
vue3获取当前路由地址
Feb 18 Vue.js
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脚本的10个技巧(8)
2006/10/09 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
如何运行/调试你的PHP代码
2020/10/23 PHP
关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
2013/04/15 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
Bootstrap Paginator分页插件使用方法详解
2016/05/30 Javascript
浅析jQuery Ajax通用js封装
2016/06/22 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
纯js模仿windows系统日历
2017/02/04 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
JQuery 进入页面默认给已赋值的复选框打钩
2017/03/23 jQuery
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
详解Vue 多级组件透传新方法provide/inject
2018/05/09 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
深入了解Python数据类型之列表
2016/06/24 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
Django基础知识 web框架的本质详解
2019/07/18 Python
python编写微信公众号首图思路详解
2019/12/13 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
html5清空画布方法(三种)
2017/10/16 HTML / CSS
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
中英双版中文教师求职信
2013/10/27 职场文书
求职推荐信
2013/10/28 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
2015年公司新年寄语
2014/12/08 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
初三英语教学计划
2015/01/23 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
「海贼王」112.9万粉丝纪念图标公布
2022/03/21 日漫