两个日期之间的差异
difference between 2 dates
我必须简单地计算两个日期之间的差异,并将其显示为整数,但如果两个日期间有大量日期(超过26),以及两个日期中有一个月的"31日",则下面的代码会出错。
找不到我的代码有什么问题。。。?
'ires_sakuma_datums'
和'ires_beigu_datums'
的值由jquery日历选择器设置,并分别以例如25-08-2012
和17-09-2012
的格式显示,结果应显示为id 'dienu_skaits'
示例'ires_sakuma_datums'
被设置为28-08-2012
并且'ires_beigu_datums'
被设置为29-09-2012
并且其结果为31.041666666666668
,尽管我期望其结果为32
function getDays()
{
var x = document.getElementById('ires_sakuma_datums').value;
var y = document.getElementById('ires_beigu_datums').value;
//assuming that the delimiter for dt time picker is a '-'.
var arr1 = x.split('-');
var arr2 = y.split('-');
var dt1 = new Date();
dt1.setFullYear(arr1[2], arr1[1], arr1[0]);
var dt2 = new Date();
dt2.setFullYear(arr2[2], arr2[1], arr2[0]);
document.getElementById('dienu_skaits').value = (dt2.valueOf() - dt1.valueOf()) / (60 * 60 * 24 * 1000);
document.forms['test'].elements['dienu_skaits'].focus();
}
问题是要传递给Date
的月份是基于0的,因此必须从该月份中减去1。http://jsfiddle.net/qB9V3/5/因此,您对28-08-2012
和29-09-2012
的比较实际上是对28-09-2012
和29-10-2012
的困难
所以你的代码需要更改为
var arr1 = x.split('-');
var arr2 = y.split('-');
var dt1 = new Date();
dt1.setFullYear(arr1[2], parseInt(arr1[1],10) -1, arr1[0]);
var dt2 = new Date();
dt2.setFullYear(arr2[2], parseInt(arr2[1],10) - 1, arr2[0]);
注意,如果你的日期跨夏令时发生变化,中间的天数将不相等,因此你需要对结果进行四舍五入
document.getElementById('dienu_skaits').value = Math.round(
(dt2 - dt1) / (60 * 60 * 24 * 1000)
);
相关文章:
- 如何在javascript中获取两个日期之间的周六和周日的日期
- 如何用moment.js列出两个日期之间的所有月份
- 我希望这个日期选择器可以从1990年到2000年之间的年份中选择日期
- moment.js在两个时区格式的日期之间存在差异
- Javascript-如何使用bootstrap日期时间选择器自动计算两个时间输入之间的差异
- 用时间戳获取两个不同日期之间的时间差
- JavaScript函数,用于计算两个日期之间的年、月和天数
- 再次使用JavaScript计算两个日期之间的天数
- Mongoose查询在两个日期时间之间提取数据
- 在Javascript中计算两个日期之间的工作日,节假日除外
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 如何使用moment.js获取24小时内日期之间的时差
- 两个日期之间的差异
- JavaScript-计算两个日期之间的天数(包括结束日期)
- 在 JavaScript 中单击函数时两个日期类型输入之间的差异的代码
- Ext 4.2.1 模型日期解析在浏览器之间不一致
- 夏令时期间不起作用的 2 个日期之间的小时差异
- 如何在javascript中计算两个日期时间之间的差异
- 考虑到夏令时,Java和JavaScript之间“日期”交换的最佳实践
- 给定一个开始日期和结束日期,创建一个包含这两个日期之间日期的数组