gpt4 book ai didi

javascript - 时差计算错误

转载 作者:行者123 更新时间:2023-11-30 13:25:14 25 4
gpt4 key购买 nike

function parseDate(s){
var parts = s.split('/')
return new Date(parts[2], parts[1], parts[0])
}

function calcDaysBetween(startDate, endDate){
return Math.floor((endDate-startDate)/86400000);
}

function yarro(){
var startDate = parseDate($('#pickupdate').val());
var endDate = parseDate($('#dropoffdate').val());
var days = calcDaysBetween(startDate, endDate);
$('#newp').html('Days Count: <b>'+days);
}

31/3/2012 , 1/4/2012
Days Count: 0 //wrong

31/1/2012 , 1/2/2012
Days Count: -1 //wrong


1/1/2012 , 2/1/2012
Days Count: 1 //ok

为什么?

最佳答案

知道 JS 月份是从 0 开始的,对此非常重要。您的代码将日期 2012 年 1 月 31 日解析为 2012 年 二月 31 日,这在技术上是无效日期,但被解释为 2012 年 3 月 2 日(第二日,因为 2012 年是闰年)。您需要做的是从 parts[1] 值中减去 1,然后再将其传递给 Date 构造函数。

您在 31/1/2012 和 1/2/2012 之间得到 -1 天,因为这些日期被解释为 2012 年 2 月 31 日(2012 年 3 月 2 日)和 2012 年 3 月 1 日。当您减去这些日期时,您会得到 - 1 天的差异。

您在 31/3/2012 和 1/4/2012 之间得到 0 天,因为这些日期被解释为 2012 年 4 月 31 日(2012 年 5 月 1 日)和 2012 年 5 月 1 日,这是同一日期,导致 0-日差。

您在 1/1/2012 和 2/1/2012 之间得到 1 天,因为这些日期被解释为 2012 年 2 月 1 日和 2012 年 2 月 2 日,导致 1 天的差异。

关于javascript - 时差计算错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com