Javascript验证日期和时间

时间:2013-02-26 11:21:57

标签: javascript

我有一块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;
        }

    }

2 个答案:

答案 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。