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 相关文章推荐
prototype class详解
Sep 07 Javascript
可以用鼠标拖动的DIV实现思路及代码
Oct 21 Javascript
解决extjs grid 不随窗口大小自适应的改变问题
Jan 26 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
深入分析JSONP跨域的原理
Dec 10 Javascript
JavaScript中的方法调用详细介绍
Dec 30 Javascript
JS实现获取剪贴板内容的方法
Jun 21 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
React路由管理之React Router总结
May 10 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
Feb 11 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php增删改查示例自己写的demo
2013/09/04 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
基于JavaScript短信验证码如何实现
2016/01/24 Javascript
Centos7 中安装 Node.js v4.4.4
2016/11/03 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
基于jquery实现彩色投票进度条代码解析
2020/08/26 jQuery
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
nuxt引入组件和公共样式的操作
2020/11/05 Javascript
如何在JavaScript中等分数组的实现
2020/12/13 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python selenium 三种等待方式解读
2016/09/15 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
美国求婚钻戒网站:Super Jeweler
2016/08/27 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
挂牌仪式主持词
2014/03/20 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
运输企业安全生产责任书
2014/07/28 职场文书
环境卫生工作汇报材料
2014/10/28 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书