jquery 时间相减获取天数_jquery计算时间差

你的位置:

问答吧

-> 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值