我有2个daettimepickers start_date_time和end_date_time想在$(end,start).change上,我想比较是否超过6小时的差异显示警报并清除输入内容
$('.dateTo,.dateFrom').blur(function () {
if ($('.dateFrom').val() !== '' && $('.dateTo').val() !== '') {
var fromTime = moment($('.dateFrom').val(),"YYYY-MM-DD HH:mm:ss");
var toTime = moment($('.dateTo').val(), "YYYY-MM-DD HH:mm:ss");
console.log(fromTime + ' - ' + toTime);
//above returns 1135054800000 - 1166562000000
//while i expect formated as above
var duration = moment.duration(toTime.diff(fromTime));
var hours = duration.asHours();
console.log(hours);
//return 8752 in meridiam is changed (from 04/12/2019 9:am to 05/12/2019 1pm)
if (fromTime >= toTime) {
$(this).val('');
alert('ToTime should be greater than fromTime.');
}
var diffMs = (toTime - fromTime)
var diffMins = Math.floor(diffMs / 60000);
if (diffMins > (6 * 60) && $(".PermissionType").val()=="Personal") {
$(this).val('');
alert('Duration should not increase 6 hours.');
}
}
});
var duration = moment.duration(toTime.diff(fromTime));
var hours = duration.asHours();
以上行在AM / PM的开始日期和结束日期时间不同时返回错误的时差
我需要05/12/2019 11:00 PM
和06/12/2019 12:00 AM
的时差,这将返回我8761
而05/12/2019 11:00 PM
和05/12/2019 11:59 PM
返回0.9833333333333333
我已经对此进行了测试,因此无法重现您的问题。使用datetime-local
输入,您可以选择时间,并获得正确的am / pm格式。
<input type="datetime-local" id="start">
<input type="datetime-local" id="end">
这里是一个小提琴,展示了https://jsfiddle.net/fLzu854x/