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 相关文章推荐
小型js框架veryide.librar源代码
Mar 05 Javascript
JavaScript 在各个浏览器中执行的耐性
Apr 06 Javascript
改进版通过Json对象实现深复制的方法
Oct 24 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 Javascript
js特殊字符转义介绍
Nov 05 Javascript
js实现鼠标点击左上角滑动菜单效果代码
Sep 06 Javascript
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
import与export在node.js中的使用详解
Sep 28 Javascript
vue+webpack实现异步组件加载的方法
Feb 03 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
JS实现关闭小广告特效
Jan 29 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删除数组中特定元素的两种方法
2013/07/02 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
PHP多维数组转一维数组的简单实现方法
2015/12/23 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
php扩展开发入门demo示例
2019/09/23 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多(步骤详解)
2020/01/14 Javascript
[46:42]DOTA2-DPC中国联赛正赛 Aster vs Magma BO3 第二场 3月5日
2021/03/11 DOTA
分析python服务器拒绝服务攻击代码
2014/01/16 Python
Windows系统配置python脚本开机启动的3种方法分享
2015/03/10 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python实现分段线性插值
2018/12/17 Python
详解Python self 参数
2019/08/30 Python
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
电子信息工程专业自荐书
2014/06/24 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang