私は、不正確な値を入力することによるTime In/Outを防ぐ簡単な検証があります。そこで、ユーザは、例えば選択した場合:新しい日付()12/24時間形式JavaScript?
12:30 PM = Time In
と
12:15 PM = Time Out
彼らは、画面'Time Out can not be less or equal than Time In'
にメッセージが表示されます。
私の検証はうまく機能しますが、1つのケースで正しく動作します。例えば、ユーザピックの場合:
Time In: 12:30 PM
と
Time Out: 1:00 PM
彼らは保存して、警告メッセージのポップアップをクリックします。
Time In: Thu Sep 15 2016 00:29:00 GMT-0500 (Central Standard Time)Time Out: Wed Sep 14 2016 13:29:00 GMT-0500 (Central Standard Time)
JavaScriptを使用してTime InとTime Outの新しい値を作成しました。私のコードはnew Date()
に12 PM時間00を設定しているようです。だから私の質問は、それを防ぐ方法ですまたはこの問題を解決するためにJavaScriptの他の方法があります。
var timeIn = document.getElementById('timeIn').value;
var timeOut = document.getElementById('timeOut').value;
var today = new Date(),
curYear = today.getFullYear(),
curDate = today.getDate(),
curMonth = today.getMonth(),
defaultTimeIn = timeIn.split(":"),
defaultTimeOut = timeOut.split(":"),
defaultHourIn = parseInt(defaultTimeIn[0], 10),
defaultHourOut = parseInt(defaultTimeOut[0], 10),
defaultMinAMPMIn = defaultTimeIn[1].split(" "),
defaultMinAMPMOut = defaultTimeOut[1].split(" "),
defaultMinIn = defaultMinAMPMIn[0],
defaultMinOut = defaultMinAMPMOut[0],
defaultAMPMIn = defaultMinAMPMIn[1],
defaultAMPMOut = defaultMinAMPMOut[1];
if (defaultAMPMIn == "PM") {
defaultHourIn += 12; //hours are in 24-hour format (0-23)
}
if (defaultAMPMOut == "PM") {
defaultHourOut += 12; //hours are in 24-hour format (0-23)
}
var compTimeIn = new Date(curYear, curMonth, curDate, defaultHourIn, defaultMinIn);
var compTimeOut = new Date(curYear, curMonth, curDate, defaultHourOut, defaultMinOut);
if (compTimeIn >= compTimeOut) {
alert("'Time Out' can't be less or equal to 'Time In'");
}
この作品は、異なるロケールで正しくでしょうか? – ppeterka
@ppeterkaわかりません。 –
http://momentjs.com/をご覧ください。おそらく、javascriptの日付/時刻を操作するための最良のライブラリです。あなたはそれで多くの面倒を節約します。 – Paulooze