Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/429.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript验证日期&;时间_Javascript - Fatal编程技术网

Javascript验证日期&;时间

Javascript验证日期&;时间,javascript,Javascript,我有一段JS需要验证和比较开始日期和时间与结束日期和时间 因此,换句话说,结束日期和时间不能小于开始日期和时间 现在问题来了。 我最初只接受24小时(军事)形式的时间。但是现在让用户选择12小时还是24小时 示例13:00或下午1:00 这段代码适用于24小时的时间格式,但不适用于12小时,这是导致问题的12:00 PM 因此,我需要调整这段代码,使其能够工作12小时或24小时,但我不知道如何做到这一点 function validateStartEndTime() { var

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

因此,换句话说,结束日期和时间不能小于开始日期和时间

现在问题来了。 我最初只接受24小时(军事)形式的时间。但是现在让用户选择12小时还是24小时

示例13:00或下午1:00

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

因此,我需要调整这段代码,使其能够工作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;
        }

    }

如果您不反对使用外部库,我发现处理日期非常方便,它允许以用户定义的格式解析日期,因此,您可以根据用户选择的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