0

開始日時と終了日時を検証して比較する必要がある JS を取得しました。

言い換えれば、終了日時は開始日時よりも前にはできません。

今問題。私は当初、24 時間 (軍事) 形式の時刻のみを受け入れました。ただし、ユーザーは 12 時間または 24 時間のいずれかを選択できるようになりました。

例 13:00 または 1:00 PM

このコードは 24 時間形式では機能しますが、問題の原因となる 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;
        }

    }
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が日付の操作に非常に便利であることがわかりました。とりわけ、ユーザー定義の形式で日付を解析できるため、ユーザーの選択に応じて日付文字列を作成できます。 AM/PM または 24 時間形式の形式で入力し、moment js にフィードします。

于 2013-02-26T11:35:06.810 に答える