2016-03-29 11 views
0

私は標準入力タイプ=日付フィールドを取得しました。このフィールドは、投稿されたときに "2016-03-28"ポストされると「午後10時30分」のような値を出力するピッカーです。日付と時刻の組み合わせが東部標準時(東部の標準時間帯)に対して過去であるかどうかを確認する必要があります。これを行う最善の方法は何ですか?ここで日付ピッカー+時間ピッカーが東部標準時間帯の過去にあるかどうかを計算する

+0

は、日付と時刻を計算します東部標準時間(おそらく米国のもの)のために、日付の前後にあるかどうかを確認してください。何を試しましたか?特定のオフセットの時間を取得することは困難ではありません。 – RobG

+0

ええ、私はそれを考え直していました。オフセットされたものがどう働いているのか分かりませんでした。私は下でそれをどのようにして投稿しました。 –

答えて

0

は、私はそれをやった方法は次のとおりです。

 var entryDate = $("input[name='launchDate']").val(); 
     var entryTime = $("input[name='launchtime']").val(); 
     var morningEvening = entryTime.slice(-2); 
     var fixedTime; 
     if (morningEvening === "am") { 
      fixedTime = entryTime.split('am').join(' AM'); 
     } else { 
      fixedTime = entryTime.split('pm').join(' PM'); 
     } 

     var newDate = new Date(entryDate + " " + fixedTime); 
     var inputDate = newDate.toLocaleString(); 
     var offset = -5.0; 

     var clientDate = new Date(); 
     var utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000); 

     var newYork = new Date(utc + (3600000*offset)); 
     var newYorkDate = newYork.toLocaleString(); 

     if (inputDate < newYorkDate) { 
      console.log("It's in the past"); 
     } else { 
      console.log("It's in the future"); 
     } 
+0

Dateコンストラクタを使用して文字列を解析することは、** toLocaleString *(これは完全に実装依存で、異なるブラウザで異なる結果を生成する)に対して生成された文字列に対して**強く**推奨され、比較されます。 – RobG

0

あなたは、両方の日付を生成するために解析する必要があります午後10時30分のように2016年3月28日及び時間などの日付のために別々の入力を考えます。日付をEST(おそらくUS-05:00)として扱うには、UTCメソッドを使用して日付を作成し、5時間を追加します。あなたはそのままであることを使用できるように

日「今」UTC時間値を持つことになりますため、そしてちょうど直接Dateオブジェクトを比較します。

/* @param {string} ds - date string in format yyyy-mm-dd 
 
** @param {string} ts - time string in format hh:mmap 
 
** @returns {Date} Date with time value for equivalent EST time 
 
*/ 
 
function parseDateTimeAsEST(ds, ts) { 
 
    var b = ds.split(/\D/); 
 
    var c = ts.split(/\D/); 
 
    c[0] = +c[0] + (/pm$/i.test(ts)? 12 : 0); 
 
    return new Date(Date.UTC(b[0], b[1]-1, b[2], c[0]+5, c[1])); 
 
} 
 

 
// Is now before or after 2016-03-28T22:30:00-05:00? 
 
document.write(new Date() < parseDateTimeAsEST('2016-03-28','10:30pm')? 'before' : 'after'); 
 

 
document.write('<br>'); 
 

 
// Is now before or after 2016-04-01T01:30:00-05:00? 
 
document.write(new Date() < parseDateTimeAsEST('2016-04-01','01:30am')? 'before' : 'after');

関連する問題