将从日期1到日期2的最长日期设置为365天
Set max date from date1 to date2 up to 365 days
我有两个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>
我需要帮助为以下内容编写一些代码:
- 日期2不能晚于日期1 365天
- 计算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
DEMO
JS代码:
$(function () {
var days_difference = 365;
function addDays(theDate, days) {
return new Date(theDate.getTime() + days*24*60*60*1000);
}
function subtractDays(theDate, days) {
return new Date(theDate.getTime() - days*24*60*60*1000);
}
function parseDate(str) {
var mdy = str.split('/')
return new Date(mdy[2], mdy[0]-1, mdy[1]);
}
function generate_difference()
{
var from_date = $("#from").datepicker( "getDate" );
var to_date = $("#to").datepicker( "getDate" );
//alert("In generate_difference 'n From date = "+from_date+" 'n To date = "+to_date);
if(from_date != null && to_date != null)
{
var diff_days = (to_date-from_date)/(1000*60*60*24);
$('#diff_days').val(diff_days);
}
}
$("#from").datepicker({
//defaultDate: "+1w",
changeMonth: true,
//numberOfMonths: 3,
onClose: function (selectedDate) {
//The selectedDate is in format mm/dd/yyyy so it should be convert to a valid javascript date
selectedDate = parseDate(selectedDate);
//alert("selectedDate = "+selectedDate+" parsed date = "+parseDate(selectedDate)+" new parsed = "+Date.parse(selectedDate));
//Generate a new date by adding "no. of days i.e 365" to selected date
var new_date = addDays(selectedDate, days_difference);
//alert("selectedDate = "+selectedDate+" new_date = "+new_date);
$("#to").datepicker("option", "minDate", selectedDate);
$("#to").datepicker("option", "maxDate", new_date);
generate_difference();
}
});
$("#to").datepicker({
//defaultDate: "+1w",
changeMonth: true,
//numberOfMonths: 3,
onClose: function (selectedDate) {
selectedDate = parseDate(selectedDate);
var new_date = subtractDays(selectedDate, days_difference)
//alert("selectedDate = "+selectedDate+" new_date = "+new_date);
$("#from").datepicker("option", "minDate", new_date);
$("#from").datepicker("option", "maxDate", selectedDate);
generate_difference();
}
});
});
<p><label>End Date:</label> </p><p>
<input type="text" id="date1" oninput="validate1()" name="date2" class="date-pick smallInput required"/>*
</p>
<p><label>End Date:</label> </p><p>
<input type="text" id="date2" oninput="validate2()" 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>
在您的javascript 中
复制粘贴这个函数,只需为date2.更改一些内容
第二个是
function totalday()
{
var a =document.getElementById('date1');
var b =document.getElementById('date2');
var a =document.getElementById(total_period).value= a-b;
}
相关文章:
- 我想以时间戳的形式将日期设置为无限
- Bootstrap DatePicker-将日期设置为明天
- 为什么将新日期设置为今天会返回昨天
- 将 JavaScript 日期设置为静态
- 将日期设置为“”格式;Md、yy”;
- 将“日期”设置为Jquery UI日期选择器输入文本框
- 如何使用日期选择器将默认日期设置为从当前日期起两天
- 如何使用javascript将验证日期设置为不小于文本框中的开始日期
- 正在将日期范围选取器的开始日期设置为空
- Javascript:将新日期设置为明天上午8点
- 引导日期选择器将日期设置为1970年之前
- 如何将小时 javascript 日期设置为大于 23 并使用 .getHours() 函数检索它们
- 如何将日期设置为 72 小时后过期
- 在引导日期选取器中将日期设置为初始为空
- 如何在引导日期设置每月的第一个日期和最后一个日期
- 如何使用另一个日期输入字段将日期设置为输入字段
- 无法将昨天的日期设置为剑道UI日期选择器
- 根据特定日期设置数组
- 将“当前日期”设置为在引导日期选取器中选中
- 在 session.createDateTime 中将日期设置为特定的 d/t 和时区