你的位置:
问答吧
-> JavaScript
-> 问题详情
jquery计算时间差
当前系统时间格式是:2010年9月16日 14:38:20
另一时间格式是:2010/9/10 18:25:18
怎样用jquery计算两者的时间差,单位是 天
各位大侠拜托了,小妹在这跪谢了!!
作者: huangfang526
发布时间: 2010-09-16
var date1 = "2010年9月16日 14:38:20";
var date2 = "2010/9/10 18:25:18";
date1 = date1.replace("年","/").replace("月","/").replace("日","");
var days = new Date(date1).getDate()-new Date(date2).getDate();
alert(days);//6
作者: gaozliang2009
发布时间: 2010-09-16
1L没有考虑不用年月的日数差距
以下两种, 大体相仿
HTML code
varstr1='2010年9月16日 14:38:20';varstr2='2010/9/10 18:25:18';//用字符串分割, 精确到日functionDays(day1, day2){vary1, y2, m1, m2, d1, d2;//year, month, day;y1=parseInt(day1);y2=parseInt(day2.split('/')[0]);
m1=parseInt(day1.split('年')[1].split('月')[0]);
m2=parseInt(day2.split('/')[1]);
d1=parseInt(day1.split('年')[1].split('月')[1].split('日')[0]);
d2=parseInt(day2.split('/')[2]);vardate1=newDate(y1, m1, d1);vardate2=newDate(y2, m2, d2);//用距标准时间差来获取相距时间varminsec=Date.parse(date1)-Date.parse(date2);vardays=minsec/1000/60/60/24;//factor: second / minute / hour / dayreturndays;
}
alert(Days(str1, str2));//用正则, 且精确到秒functionDays1(day1, day2){vary1, y2, y3, m1, m2, m3, d1, d2, d3, h1, h2, h3, _m1, _m2, _m3, s1, s2, s3;varreg=/年|月|日 |\/|:|/;//dayinfo - 用正则分割varDI1=day1.split(reg);varDI2=day2.split(reg);vardate1=newDate(DI1[0], DI1[1], DI1[2], DI1[3], DI1[4], DI1[5]);vardate2=newDate(DI2[0], DI2[1], DI2[2], DI2[3], DI2[4], DI2[5]);//用距标准时间差来获取相距时间varminsec=Date.parse(date1)-Date.parse(date2);vardays=minsec/1000/60/60/24;//factor: second / minute / hour / dayreturndays;
}
alert(Days1(str1, str2));
作者: wz_307
发布时间: 2010-09-16
引用 2 楼 wz_307 的回复:
1L没有考虑不用年月的日数差距
以下两种, 大体相仿
HTML code
var str1 = '2010年9月16日 14:38:20';
var str2 = '2010/9/10 18:25:18';
……
大哥,你考虑每月有多少天吗?你这个是按每月30天吧,你把str2的值改成2010/8/30试试,输出的应该是17天吧,你这输出的是16天,8月份有31天的。
作者: huangfang526
发布时间: 2010-09-16
引用 1 楼 gaozliang2009 的回复:
var date1 = "2010年9月16日 14:38:20";
var date2 = "2010/9/10 18:25:18";
date1 = date1.replace("年","/").replace("月","/").replace("日","");
var days = new Date(date1).getDate()-new Date(date2).getDate(……
大哥,你考虑月份了吗?如果date2是2010/8/30 18:25:18会是怎样?
作者: huangfang526
发布时间: 2010-09-16
引用 3 楼 huangfang526 的回复:
引用 2 楼 wz_307 的回复:
1L没有考虑不用年月的日数差距
以下两种, 大体相仿
HTML code
var str1 = '2010年9月16日 14:38:20';
var str2 = '2010/9/10 18:25:18';
……
大哥,你考虑每月有多……
当然考虑了 这是根据标准时间相减的出来的毫秒值.
不过lz说的问题我查了一下, 以前还真没注意
http://www.soidc.net/discuss/12/060803/21/62525_1.html
这是JS的bug, 8月31日会自动等于9月1日. 囧, 真不知道还有这种事, 你换做别的日期来时应该都是对的吧.
解决办法, 如果判断出来某一天是8月31日, 就相应+1或-1。
另请仔细看代码, 我的思路没错
作者: wz_307
发布时间: 2010-09-16
考虑月份的话,2L的稍改下就可以了
var date1 = "2010年9月16日 14:38:20";
var date2 = "2010/8/30 18:25:18";
date1 = date1.replace("年","/").replace("月","/").replace("日","");
var d1 = parseInt(new Date(date1).getTime()/1000/60/60/24);
var d2 = parseInt(new Date(date2).getTime()/1000/60/60/24);
var days = d1 - d2;
alert(days);
==========================
to #5楼:
var date1 = new Date(DI1[0], DI1[1], DI1[2], DI1[3], DI1[4], DI1[5]);
用这种方法定义日期,月份一定要-1(月份范围0-11)
作者: slowhand
发布时间: 2010-09-16
引用 6 楼 slowhand 的回复:
考虑月份的话,2L的稍改下就可以了
var date1 = "2010年9月16日 14:38:20";
var date2 = "2010/8/30 18:25:18";
date1 = date1.replace("年","/").replace("月","/").replace("日","");
var d1 = parseInt(new Date(date1).getTi……
月份不用-1, 你定义后alert(getMonth())就知道了. 只不过在通过12定义的时候, 返回的是0. js的Date()问题很多啊. 不过因为两个都是根据标准时间计算的, 所以两边同时+1/-1 +n/-n都无所谓了
6L的时间获取也是对的. 只不过一个是用date.getTime()一个是用Date.parse(date)结果是一样的. 遇到8月31还是出问题. 我仔细查了一下, js里认为8月只有30天, lz遇到8月就稍加修改
作者: wz_307
发布时间: 2010-09-16
LS试过其他月份吗?
以下是从JS参考手册中摘取的一部分:
dateObj = new Date()
dateObj = new Date(dateVal)
dateObj = new Date(year, month, date[, hours[, minutes[, seconds[,ms]]]])
参数
dateObj
必选项。要赋值为 Date 对象的变量名。
dateVal
必选项。如果是数字值,dateVal 表示指定日期与 1970 年 1 月 1 日午夜间全球标准时间 的毫秒数。如果是字符串,则 dateVal 按照 parse 方法中的规则进行解析。dateVal 参数也可以是从某些 ActiveX(R) 对象返回的 VT_DATE 值。
year
必选项。完整的年份,比如,1976(而不是 76)。
month
必选项。表示的月份,是从 0 到 11 之间的整数( 1 月至 12 月)。
date
必选项。表示日期,是从 1 到 31 之间的整数。
hours
可选项。 如果提供了 minutes 则必须给出。表示小时,是从 0 到 23 的整数(午夜到 11pm)。
minutes
可选项。 如果提供了 seconds 则必须给出。表示分钟,是从 0 到 59 的整数。
seconds
可选项。 如果提供了 milliseconds 则必须给出。表示秒钟,是从 0 到 59 的整数。
ms
可选项。 表示毫秒,是从 0 到 999 的整数。
============================================
月份和日期的双重标准让人很不爽~
作者: slowhand
发布时间: 2010-09-16