2013-02-25 160 views
10

私は25-02-2013のような形式の日付で使用する入力フィールドから文字列を取得しました。今私は今日の日付と文字列を比較したいと思います。私は、文字列が古くなったか、それとも新しい日付かを知りたい。文字列とjavascriptの今日の日付とを比較する

提案がありますか?

+0

http://stackoverflow.com/a/8215648/1520671 –

答えて

0
<script type="text/javascript"> 

var q = new Date(); 
var m = q.getMonth()+1; 
var d = q.getDay(); 
var y = q.getYear(); 

var date = new Date(y,m,d); 

mydate=new Date('2011-04-11'); 
console.log(date); 
console.log(mydate) 

if(date>mydate) 
{ 
    alert("greater"); 
} 
else 
{ 
    alert("smaller") 
} 


</script> 
+8

@Leon van der Veen - このコードにはバグがあります。現在の月が12月の場合、結果は間違っています....それをチェックしてください(現在の日付2012年3月12日および入力日付23/12/2012)..回答を投稿する前にテストしてください... – 999k

+0

私はあなたが必要と思いますバグを避けるために両方の日付がiso形式(YYYY-MM-DD)であることを確認するには、toISOString()を使用することができます。 – Loopo

0

あなたの日付入力はフォーマット "25-02-2013" である場合は、スプリットを使用してDD、MM及びYYYYに文字列を分割することができます()メソッド:

var date_string="25-02-2013"; 

var day = parseInt(date_string.split("-")[0]); 
var month= parseInt(date_string.split("-")[1]); 
var year = parseInt(date_string.split("-")[2]); 

のparseInt()関数文字列を整数にするために使用されます。 3つの変数は、Date()オブジェクトのプロパティと比較できます。

3

Javascriptを使用してDateオブジェクトがあなたのために簡単になります。しかし、Dateオブジェクトはあなたのフォーマットをサポートしていないので、入力文字列(例:25-02-2013)を ' - 'で解析してdatemonthyearにしてからDateオブジェクトを比較する必要があると思います。受け入れ答えから

var x ='23-5-2010'; 
var a = x.split('-'); 
var date = new Date (a[2], a[1] - 1,a[0]);//using a[1]-1 since Date object has month from 0-11 
var Today = new Date(); 
if (date > Today) 
    alert("great"); 
else 
    alert("less"); 
+0

3行目は 'var date = new Date(a [0]、a [1] - 1、a [2])にする必要があります。 ; ' – k29

+0

@ k29いいえDateオブジェクトは、年、月、曜日の順序で引数を受け入れます。 OPの入力文字列a [2]は年ですので、私のステートメントは正しいです。 – 999k

+0

を確認してください。申し訳ありません。私は、コードを試してみるときに、他の答えから文字列の1つをコピーしたと思います。 – k29

12

正確な日付のcomparsion、解決バグ

var q = new Date(); 
var m = q.getMonth(); 
var d = q.getDate(); 
var y = q.getFullYear(); 

var date = new Date(y,m,d); 

mydate=new Date('2011-04-11'); 
console.log(date); 
console.log(mydate) 

if(date>mydate) 
{ 
    alert("greater"); 
} 
else 
{ 
    alert("smaller") 
} 
4

あなたは日付が別のものよりも大きいかどうかを確認するために、単純な比較演算子を使用することができます。

var today = new Date(); 
var jun3 = new Date("2016-06-03 0:00:00"); 

if(today > jun3){ 
    // True if today is on or after June 3rd 2016 
}else{ 
    // Today is before June 3rd 
} 

2番目の変数に0:00:00を追加した理由は、それがなければUTC (グリニッジ標準時)、望ましくない結果をもたらす可能性があります。時間を0に設定すると、ユーザーのローカル深夜と比較されます。

0

日付の比較

  • をしている間、日付の両方が正確な結果を得るために同じ形式である必要があります覚えておく必要がある最も重要なポイント。
  • 日付の時刻形式を使用していて、日付の比較のみを行う場合は、関連する形式で変換する必要があります。

ここに私が使用したコードがあります。

  var dateNotifStr = oRecord.getData("dateNotif"); 
      var today = new Date();  
      var todayDateFormatted = new Date(today.getFullYear(),today.getMonth(),today.getDate()); 

      var dateNotif=new Date(dateNotifStr); 
      var dateNotifFormatted = new Date(dateNotif.getFullYear(),dateNotif.getMonth(),dateNotif.getDate()); 

これはさらに最適化することができますが、これは均一な形式で日付を作成するために必要なことを明確にするはずです。

関連する問題