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生成/解析dom的CDATA类型的字段的代码
Apr 22 Javascript
解析Javascript中中括号“[]”的多义性
Dec 03 Javascript
使用POST方式弹出窗口的两种方法示例介绍
Jan 29 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
Jul 20 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
angularjs下拉框空白的解决办法
Jun 20 Javascript
在 React、Vue项目中使用SVG的方法
Feb 09 Javascript
jQuery-ui插件sortable实现自由拖动排序
Dec 01 jQuery
Jquery的Ajax技术使用方法
Jan 21 jQuery
javascript触发模拟鼠标点击事件
Jun 26 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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+java实现自动新闻滚动窗口
2006/10/09 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
php实现refresh刷新页面批量导入数据的方法
2014/12/23 PHP
编写PHP脚本清除WordPress头部冗余代码的方法讲解
2016/03/01 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
jQuery的强大选择器小结
2009/12/27 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
详解python中*号的用法
2019/10/21 Python
Python笔记之代理模式
2019/11/20 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
python接口自动化如何封装获取常量的类
2019/12/24 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
计算机系统管理员求职信
2014/06/20 职场文书
学校读书活动总结
2014/06/30 职场文书
大学感恩节活动总结
2015/05/05 职场文书
医院感染管理制度
2015/08/05 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
Python打包exe时各种异常处理方案总结
2021/05/18 Python
Python基础学习之奇异的GUI对话框
2021/05/27 Python