Javascript验证日期&;时间
我有一段JS需要验证和比较开始日期和时间与结束日期和时间 因此,换句话说,结束日期和时间不能小于开始日期和时间 现在问题来了。 我最初只接受24小时(军事)形式的时间。但是现在让用户选择12小时还是24小时 示例13:00或下午1:00 这段代码适用于24小时的时间格式,但不适用于12小时,这是导致问题的12:00 PM 因此,我需要调整这段代码,使其能够工作12小时或24小时,但我不知道如何做到这一点Javascript验证日期&;时间,javascript,Javascript,我有一段JS需要验证和比较开始日期和时间与结束日期和时间 因此,换句话说,结束日期和时间不能小于开始日期和时间 现在问题来了。 我最初只接受24小时(军事)形式的时间。但是现在让用户选择12小时还是24小时 示例13:00或下午1:00 这段代码适用于24小时的时间格式,但不适用于12小时,这是导致问题的12:00 PM 因此,我需要调整这段代码,使其能够工作12小时或24小时,但我不知道如何做到这一点 function validateStartEndTime() { var
function validateStartEndTime() {
var date = document.getElementById("datepickerStart").value;
var dateEnd = document.getElementById("datepickerEnd").value;
if (!isValidDate(date)) {
alert("Not Valid Date");
return false;
}
var start = document.getElementById("timepicker").value;
var end = document.getElementById("timepickerEnd").value;
var stDate = new Date(parse(date +" "+ start));
var enDate = new Date(parse(dateEnd + " "+ end));
var compDate = enDate - stDate;
if (compDate >= 0)
return true;
else {
alert("End time must be greater than Start Time ");
return false;
}
}
如果您不反对使用外部库,我发现处理日期非常方便,它允许以用户定义的格式解析日期,因此,您可以根据用户选择的AM/PM或24小时格式构建日期字符串,并将其提供给moment js。您可以编写一个函数,将12小时格式的时间转换为24小时格式的时间,例如:
function convertTo24HourFormatIfNeeded(timeString) {
var is12HourFormat = timeString.indexOf("M") !== -1;
if (is12HourFormat) {
var isPm = timeString.indexOf("PM") !== -1;
var timeStringNoSuffix = timeString.split(" ")[0];
if (isPm) {
var hoursAndMinutes = timeStringNoSuffix.split(":");
var hours = hoursAndMinutes[0];
var convertedHours = (Number(hours) + 12);
var minutes = hoursAndMinutes[1];
return convertedHours + ":" + minutes;
} else {
return timeStringNoSuffix;
}
} else {
return timeString;
}
}
然后在代码中使用它:
var start = convertTo24HourFormatIfNeeded(document.getElementById("timepicker").value);
var end = convertTo24HourFormatIfNeeded(document.getElementById("timepickerEnd").value);
如果选择PM且小时数小于或等于12,则在小时数中添加12