日付は、年、月、日のドロップダウンを使用してユーザーが選択します。ユーザーが入力した日付を今日の日付と比較する必要があります。基本的に、それらが同じ日付であるかどうかを確認します。たとえば、ユーザーが 02/16/2012 と入力したとします。今日が 2012 年 2 月 16 日の場合、メッセージを表示する必要があります。どうすればいいのですか?ミリ秒を使用してみましたが、間違った結果が得られます。
5 に答える
そして、あなたはどんな種類のオブジェクトを取り戻していますか? 文字列、カレンダー、日付? その文字列を取得して比較できます。少なくとも、順序 YYYY MM DD /// DD MM YYY に問題があると思われる場合は、仕様 YYYYMMDD に基づいてカスタム文字列を作成して比較することをお勧めします。
Date d1 = new Date();
Date d2 = new Date();
String day1 = d1.getYear()+"/"+d1.getMonth()+"/"+d1.getDate();
String day2 = d2.getYear()+"/"+d2.getMonth()+"/"+d2.getDate();
if(day1.equals(day2)){
System.out.println("Same day");
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2012-05-17");
Date date2 = sdf.parse("2012-01-01");
System.out.println(sdf.format(date1));
System.out.println(sdf.format(date2));
if(date1.compareTo(date2)>0){
System.out.println("Date1 is after Date2");
}else if(date1.compareTo(date2)<0){
System.out.println("Date1 is before Date2");
}else if(date1.compareTo(date2)==0){
System.out.println("Date1 is equal to Date2");
}
また
if(date1.equals(date2)){
System.out.println("Date1 is equal Date2");
}
日付を比較する方法を確認し てください
Java の日付は、「ミリ秒まで」の分解能を持つ瞬間です。2 つの日付を効果的に比較するには、最初に両方の日付を時間、分、秒、およびミリ秒で「同じ時間」に設定する必要があります。のすべての「setTime」メソッドjava.util.Date
は非推奨です。国際化とローカリゼーションの問題に対して正しく機能しないためです。
これを「修正」するために、新しいクラスが導入されましたGregorianCalendar
GregorianCalendar cal1 = new GregorianCalendar(2012, 11, 17);
GregorianCalendar cal2 = new GregorianCalendar(2012, 11, 17);
return cal1.equals(cal2); // will return true
GregorianCalendar が機能する理由は、年、月、日のコンストラクターで時、分、秒、およびミリ秒がゼロに初期化されることに関連しています。のような非推奨の方法java.util.Date
を使用して、これを近似することができます。ただし、最終的には、が不足しているため失敗します。つまり、この形式を使用するには、ミリ秒を取得し、整数演算を実行してミリ秒をゼロに設定する必要があります。setHours(0)
setMillis(0)
Date
date1.setHours(0);
date1.setMinutes(0);
date1.setSeconds(0);
date1.setTime((date1.getTime() / 1000L) * 1000L);
date2.setHours(0);
date2.setMinutes(0);
date2.setSeconds(0);
date2.setTime((date2.getTime() / 1000L) * 1000L);
return date1.equals(date2); // now should do a calendar date only match
私を信じてください。Calendar / GregorianCalendar クラスを使用するだけです。これが前進の道です (Java が joda time.
それを行うには2つの方法があります。最初のものは、同じ日付形式の日付または文字列形式の日付の両方の形式です。
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String date1 = sdf.format(selectedDate);
String date2 = sdf.format(compareDate);
if(date1.equals(date2)){
}else{
}
または
Calendar toDate = Calendar.getInstance();
Calendar nowDate = Calendar.getInstance();
toDate.set(<set-year>,<set-month>,<set-date->);
if(!toDate.before(nowDate))
//display your report
else
// don't display the report
上記の回答は正しいですが、よりシンプルで直感的な API である JodaTime の使用を検討してください。DateTime
メソッドを使用して設定しwith*
、それらを比較できます。
この答えを見て