gpt4 book ai didi

javascript - 设置从日期 1 到日期 2 的最大日期,最多 365 天

转载 作者:行者123 更新时间:2023-11-28 08:04:37 26 4
gpt4 key购买 nike

我有 2 个 jQuery 日期选择器:

<p><label>Start Date:</label> </p><p>
<input type="text" id="date1" name="date1" class="date-pick smallInput required"/>
</p>

<p><label>End Date:</label> </p><p>
<input type="text" id="date2" name="date2" class="date-pick smallInput required"/>*
</p>

<p><label>Total Period:</label> </p><p>
<input type="text" id="Total_Period" name="Total_Period" class="smallInput required"/> *
</p>

我需要帮助编写以下代码:

  1. 日期 2 不能晚于日期 1 365 天
  2. 计算 Total_Period 中日期 1 和日期 2 之间的天数

最佳答案

要计算设置为全天相同时间的两个日期之间的差异,请用一个减去另一个日期并除以一天中的毫秒数,然后四舍五入到最接近的全天(考虑夏令时):

function diffInDays(d0, d1) {
var msDay = 8.64e7; // ms in 1 day
var msLimit = 3.1536e10; // ms in 365 days

var diff = Math.abs(d1 - d0); // diff in ms

if (diff > msLimit) {
return false; // or throw error or whatever
}

// Return number of days
// Rounding removes daylight saving effect +/- 1 hour
return Math.round(diff / msDay);
}

请注意,这取决于您如何衡量一天。如果日期具有相同的时间(例如 00:00:00.0),则上述“有效”。但是,如果他们的时间不同,则可能不会。例如。 2014-07-25 23:59:59 和 2014-07-26 00:00:01 之间的差异应该是一天还是 2 秒(0 天)?

如果时间可能不同,但您只想处理日期(即上面的差异是 1 天而不是 0 天),则复制日期并将其时间设置为相同时间:

function diffInDays(d0, d1) {
// Copy dates so don't affect originals
d0 = new Date(+d0);
d1 = new Date(+d1);

// Set to same time, midnight at start of day
d0.setHours(0,0,0,0);
d1.setHours(0,0,0,0);

// rest of function is as above
...
}

console.log(diffInDays(new Date(2014,6,25,23,59,59), new Date(2014,6,26,0,0,1))); // 1
console.log(diffInDays(new Date(2014,0,1), new Date(2014,11,31))); // 364

关于javascript - 设置从日期 1 到日期 2 的最大日期,最多 365 天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946413/

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