我有一块JS需要验证并比较开始日期和时间与结束日期和时间。
所以换句话说结束日期&时间不能少于开始日期和时间。
现在问题。 我最初只接受24小时(军事)格式的时间。但现在让用户选择12小时或24小时。
示例13:00或下午1:00
这段代码适用于24小时时间格式,但不适用于12,其中午12点导致问题。
所以我需要调整这段代码才能工作12小时或24小时,但我不知道该怎么做。
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;
}
}
答案 0 :(得分:1)
您可以编写一个函数,将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);
答案 1 :(得分:0)
如果您不喜欢使用外部库,我发现MomentJs非常便于使用日期,除此之外它还允许以用户定义的格式解析日期,因此您可以构建您的日期字符串相应于用户选择的AM / PM或24小时格式,并将其提供给时刻js。