2016-10-19 1 views
0

問題があります。 Angular.js/Javascriptを使用して、今日の日付と前の日付を比較することはできません。私は以下のコードを説明しています。Angular.js/Javascriptを使用して日付を比較できません

var today=new Date(); 
if(today >= new Date($scope.date1.split("-").reverse().join(","))){ 
    alert('Please select todays date or upcoming date'); 
} 

ここで私は日付が選択した日付はアラートが私を助けるdisplay.Pleaseなることを今日の日付の前の日付である間、私は必要2016-10-18 .Hereている間、私は比較することができませんでした。この2016-10-18 format.Hereよう$scope.date1値を取得しています。

+0

'「2016年10月18日」のようになり、あなたのケースでそうfalse

anothertoday > today //---->false 

に評価する必要があります.split( ' - ')。reverse()。join( '、') 'は1810,2016になります。' 'これは日付形式ではありません – Phil

+0

' new Date( '2016-10-18' ) '正しい' Date'インスタンスを作成しているようです。あなたが達成しようとしていることはまったく確信していません。 – Phil

+0

@ Phil:しかし、私は '2016年10月06日 'のような日付を取っていますが、それはうまくいきます。 – subhra

答えて

1

new Date($scope.date1.split("-").reverse().join(","))は、有効な日付を作成しません。あなたがやっているよう

//Pass the string directly 
 
var nDate = new Date('2016-10-18'); 
 
var today = new Date(); 
 
if (today >= nDate) { 
 
    console.log('Please select todays date or upcoming date'); 
 
}

+0

@ Satpal:今日のアラートは、今日のアラートを示すものでもありません。つまり、「すなわち2016-10-19」は来ないはずです。 – subhra

+0

@subhra、 'new Date()'は 'new Date( '2016-10-18')'がタイムゾーンオフセットで日付を設定する現在の日付と時刻を考慮します – Satpal

+0

この場合、どうすればいいですか?これを行う。ここで入力するのは日付だけです。 – subhra

0

あなたは日付を比較することはできません。

new Date()で日付オブジェクトを初期化すると、現在の時刻で設定されます。

ので

var today = new Date("2016-10-19"); //----> current date here 
var anothertoday = new Date(); 

は、あなたがそれを比較するには日付

today.getHours() //---> 0 
anothertoday.getHours() //---> current time shall be displayed 

両方の時間を見ている場合ので、上記の式の評価結果がtrueと同じ

anothertoday > today //-----> true 

になることはありませんものdateにのみ基づいて、anothertodayの時間を設定する必要があります今anothertoday.setHours(0,0,0,0)

によって0に上記の式は、あなたのコードはあなたが知っているこの

var today = new Date(); 
$scope.date1 = "2016-10-18"; 
$scope.datearr = $scope.date1.split("-"); 
var yesterday = new Date($scope.datearr[0],$scope.datearr[1] - 1,$scope.datearr[2]); 
today.setHours(0,0,0,0); //----> set time to 0 hours 
if(today > yesterday) 
    console.log("Please select todays date or upcoming date");