2012-02-21 12 views
1
var onemonth = 3; 
var oneyear = 2005; 
var twomonth = 10; 
var twoyear = 2000; 

これを分割して比較するにはどうすればよいですか?この例で は次のとおりです。私は月と年を持っている場合年と月をjQueryと比較する

var firstdate = onemonth + oneyear; 
var seconddate = twomonth + twoyear; 

if(firstdate < seconddate){ 
alert('error'); 
} 

方法は、2つの日付を比較するための最良の方法ですか?

LIVE:http://jsfiddle.net/26zms/

答えて

3

何このようなネイティブのDateオブジェクトを使用してはどうですか?

if (new Date(oneyear, onemonth) < new Date(twoyear, twomonth)){ 
    alert('error'); 
}else{ 
    alert('ok'); 
} 

変数で「ok」と表示されます。

+2

通常、あなたは 'onemonth'と' twomonth'から1を引く必要があります。 Dateオブジェクトの月はゼロベースです。だから、もしあなたが '12'を渡すと、年は1つ増え、月は1月になります。 **このケースでは、両方のDateオブジェクトが1か月間転送されるので、問題はありません。 (前の行を理解できなかった場合、 '3 <10 'は' 3-1 <10-1'と同じです)。 –

+0

あなたは両方の点で正しいです! 'new Date(2011,12)'が 'new Date(2012,0)'と同等である限り、比較は安全です。 –

2

その後、適切な日付を確認します。ゼロを追加し、私た内容に応じて、

1

とconcate文字列よりも、(任意に作成された整数を比較すると対照的に)

var firstdate = new Date(oneyear, onemonth - 1, 1); 
var seconddate = new Date(twoyear, twomonth - 1, 1); 

は、その後の比較が有効であるためにDateオブジェクトを使用する必要はありません

var onemonth = 3; 
if(onemonth < 10) 
onemonth = "0" + onemonth; 
var oneyear = 2005; 
var oneyearmonth = oneyear + onemonth; // 200503 
var twomonth = 10; 
if(twomonth < 10) 
twomonth = "0" + twomonth ; 
var twoyear = 2000; 
var twoyearmonth = twoyear + twomonth ; //200010 
if(oneyearmonth < twoyearmonth) 
{ 
    alert("one month and year leass than tow month and year"); 
} 
1

この場合。簡単な数学で十分です:

  • 月を12で割ってください。
  • この値を年に追加します。
  • は、他の日付(複数可)についても同じ操作を行い、その値を比較:

コード:

var onemonth = 3; 
var oneyear = 2005; 
var twomonth = 10; 
var twoyear = 2000; 

var year1 = oneyear + onemonth/12; 
var year2 = twoyear + twomonth/12; 
if (year1 < year2) { 
    // error? 
} 
関連する問題