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 轻松支持函数重载 (Part 2 - 实现)
Aug 04 Javascript
jquery实现类似淘宝星星评分功能有截图
Sep 15 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
Jul 07 Javascript
js实现String.Fomat的实例代码
Sep 02 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
Sep 08 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
重新认识vue之事件阻止冒泡的实现
Aug 02 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 Javascript
基于Vue实现微前端的示例代码
Apr 24 Javascript
原生js实现五子棋游戏
May 28 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
2019/06/03 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
让iframe子窗体取父窗体地址栏参数(querystring)
2009/10/13 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
js 弹出框只弹一次(二次修改之后的)
2013/11/26 Javascript
jquery防止重复执行动画避免页面混乱
2014/04/22 Javascript
javascript实现图片延迟加载方法汇总(三种方法)
2015/08/27 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
浅谈Vue的加载顺序探讨
2017/10/25 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
简化Python的Django框架代码的一些示例
2015/04/20 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
Python求离散序列导数的示例
2019/07/10 Python
numpy.array 操作使用简单总结
2019/11/08 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
德国体育用品网上商店:SC24.com
2016/08/01 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
八年级英语教学反思
2014/01/09 职场文书
运动会邀请函范文
2014/01/31 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
给上级领导的感谢信
2015/01/22 职场文书
应届生简历自我评价
2015/03/11 职场文书
城南旧事电影观后感
2015/06/16 职场文书
贷款收入证明格式
2015/06/24 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
linux下安装redis图文详细步骤
2021/12/04 Redis