0

我有一段 JS 需要验证并比较开始日期和时间与结束日期和时间。

所以换句话说,结束日期和时间不能小于开始日期和时间。

现在的问题。我最初只接受 24 小时(军用)格式的时间。但现在让用户在 12 小时或 24 小时之间进行选择。

示例 13:00 或 1:00 PM

这段代码适用于 24 小时时间格式,但不适用于 12,即导致问题的下午 12:00。

所以我需要调整这段代码以使其工作 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;
        }

    }
4

2 回答 2

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);
于 2013-02-26T11:36:41.527 回答
0

如果您不反对使用外部库,我发现MomentJs可以非常方便地处理日期,除此之外,它还允许以用户定义的格式解析日期,因此您可以根据用户选择构建日期字符串上午/下午或 24 小时格式,并将其提供给时刻 js。

于 2013-02-26T11:35:06.810 回答