使用Javascript验证开始时间和结束时间

时间:2017-05-22 09:00:02

标签: javascript

大家好,我正在尝试使用javascript验证开始时间和结束时间,如下所示

<input type="text" id="txtStartTime" value="5:00 PM" />
    <input type="text" id="txtEndTime" value="01:23 AM" />
    <input type="button" id="btnCompare" value="Compare" onclick="Compare()" />
    <script type="text/javascript">
        function Compare() {
            var strStartTime = document.getElementById("txtStartTime").value;
            var strEndTime = document.getElementById("txtEndTime").value;

            var startTime = new Date().setHours(GetHours(strStartTime), GetMinutes(strStartTime), 0);
            var endTime = new Date(startTime)
            endTime = endTime.setHours(GetHours(strEndTime), GetMinutes(strEndTime), 0);
            if (startTime > endTime) {
                alert("Start Time is greater than end time");
            }
            if (startTime == endTime) {
                alert("Start Time equals end time");
            }
            if (startTime < endTime) {
                alert("Start Time is less than end time");
            }
        }
        function GetHours(d) {
            var h = parseInt(d.split(':')[0]);
            if (d.split(':')[1].split(' ')[1] == "PM") {
                h = h + 24;
            }
            return h;
        }
        function GetMinutes(d) {
            return parseInt(d.split(':')[1].split(' ')[0]);
        }
    </script>

我需要的是,如果我在开始时间为早上8:00进入,结束时间为早上9:00它应该返回true,如果我在开始时间进入上午9:00,结束时间为上午8:00是应该返回false

2 个答案:

答案 0 :(得分:0)

您可以使用此功能 -

function compareDate (a,b) {
        // Compare two dates (could be of any type supported by the convert
        // function above) and returns:
        //  -1 : if a < b
        //   0 : if a = b
        //   1 : if a > b
        // NaN : if a or b is an illegal date
        // NOTE: The code inside isFinite does an assignment (=).
        return (
            isFinite(a.valueOf()) &&
            isFinite(b.valueOf()) ?
            (a>b)-(a<b) :
            NaN
        );
    }

此功能仅适用于日期类型。请找到之前提供的解决方案的原始link

答案 1 :(得分:0)

尝试以下脚本,如果您要设置以小时为单位的时间,如果您想要使用分钟验证,那么您需要使用不同的应用程序

function Compare() {
    var startTime= "15:00"; // format hh:mm
    var endTime = "12:00";
    var st = startTime.split(":");
    var et = endTime .split(":");
    var OK = false;

    if (st[0] < et[0]) { OK = false }
    else
    {
        OK = true;
    }
    if (!OK) {
        alert("The end time is less than start time");
    }
}