2012-03-08 13 views
5

"MM/DD/YYYY"形式の日付入力とJavascriptのDate()機能を比較するにはどうすればよいですか?例えば「MM/DD/YYYY」日付とJavascriptのDate()関数を比較するにはどうすればよいですか?

Date objectドキュメントで

if (InputDate < TodaysDate){ 
    alert("You entered past date") 
} 
else if (InputDate > TodaysDate){ 
    alert("You entered future date") 
} 
else if (InputDate = TodaysDate){ 
    alert("You entered present date") 
} 
else{ 
    alert("please enter a date") 
} 

答えて

2

おかげで、すべてのあなたは上記の持っているように次に、あなただけの日付を比較することができます!上記のいずれかを見つけることができませんでしたが、それは最終的に動作するようになった。少しハックしなければならなかった)

私は、getMonth、getDate、getYearを使用してDateを分割し、それを解析して比較しました。それは私が欲しいのと同じように機能します:

Date.parse(document.getElementById("DateId").value) < Date.parse(dateToday.getMonth() + "/" + dateToday.getDate() + "/" + dateToday.getYear()) 
1

ルック。

入力された日付(コンストラクタまたはsetMonthメソッドなどのいずれかを使用)と現在の日付(コンストラクタへの引数なし)のDateオブジェクトが1つ必要です。 getTimeを使用して、両方のオブジェクトでUNIXタイムスタンプを取得し、それらを比較することができます。

0

http://www.datejs.com/をご覧ください。それは標準的な日付操作であなたを助けるでしょう

+0

Datejsは単純な日付比較のために、特に日付が既知の形式の場合には過剰です。 *別の*ライブラリを含めるだけの価値はありません。最初は印象的だったが、現実世界の自然言語表現を試してみると、かなり頑強ではありません。例えば、「10時」、「6今晩」、「今日から2日」など。 2007年以降更新されていないため、その堅牢性が追加されることはあまりありません。 – gilly3

+0

まあ、私はあなたが意味することを理解していますが、JavaScriptで日付のものをすることは、正しいことをしたい場合には時間がかかることがあります。私は外部の図書館を使うことは余分な費用の価値があると思うが、それは維持され、安定したものでなければならないということに同意する。私は個人的にdatejsの仕事を大量に行っていないので、私はあなたが正しいと仮定することができます。この種のものを自分で作ることは生産的ではなく、新しいコードにはバグが含まれているので、常に既存のものやテスト済みのものを再利用しようとします。 – koenpeters

3

new Date(dateString)を使用して文字列を日付に変換します。 today.setHours(0, 0, 0, 0)を使用して今日の日付を正規化して時間情報を省略します。

var date = new Date(dateInput); 
if (isNaN(date)) { 
    alert("please enter a date"); 
} 
else { 
    var today = new Date(); 
    today.setHours(0, 0, 0, 0); 
    date.setHours(0, 0, 0, 0); 
    var dateTense = "present"; 
    if (date < today) { 
     dateTense = "past"; 
    } 
    else if (date > today) { 
     dateTense = "future"; 
    } 
    alert("You entered a " + dateTense + " date"); 
} 

デモ:http://jsfiddle.net/w2sJd/

+0

これは私のために働いた。 –

-3
function compareDate(inputDateString) { 
    var inputDate, now; 
    inputDate = new Date(inputDateString); 
    now = new Date(); 
    if (inputDate < now) { 
    console.log("You entered past date"); 
    } 
    else if (inputDate > now) { 
    console.log("You entered future date"); 
    } 
    else if (inputDate === now) { 
    console.log("You entered present date"); 
    } 
    else { 
    console.log("please enter a date"); 
    } 
} 
+3

これは今日の日付では2つの理由で機能しません。まず、値ではなく参照によって比較しています。 'inputDate'は' Date'と同じDateオブジェクトを参照しませんが、それらの値は等しいかもしれません。第2に、 'MM/dd/yyyy'を解析することによって作成された日付は、時間、分、秒、およびmsがすべて0に等しいのに対し、new date()は時間情報を含みます(1ミリ秒を除く) 。 – gilly3

関連する問題