ユーザーが入力した日付は、日、月、年ごとに個別にドロップダウンを使用しています。ユーザーが入力した日付を今日の日付と比較し、同じ日か将来の日かを確認する必要があります。時間には興味がなく、日付だけなので、時間の部分について少し混乱しています。Date クラスを使用せずにこれを解決する方法 (Date クラスの使用は推奨されません)。
ありがとう。
ユーザーが入力した日付は、日、月、年ごとに個別にドロップダウンを使用しています。ユーザーが入力した日付を今日の日付と比較し、同じ日か将来の日かを確認する必要があります。時間には興味がなく、日付だけなので、時間の部分について少し混乱しています。Date クラスを使用せずにこれを解決する方法 (Date クラスの使用は推奨されません)。
ありがとう。
GregorianCalendar
最初に、入力した日付を表すインスタンスを作成する必要があります。
Calendar user = new GregorianCalendar(2012, Calendar.MAY, 17);
そして「今」のための1つ:
Calendar now = new GregorianCalendar();
これにより、日付が将来の場合は正の値になり、過去の場合は負の値になります。
user.compareTo(now);
user
オブジェクトの構築に関するいくつかの注意:
このソリューションを試してください:
int day = 0; //user provided
int month = 0; //user provided
int year = 0; //user provided
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONDAY, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
long millisUser = calendar.getTime().getTime();
long nowMillis = System.currentTimeMillis();
if(nowMillis < millisUser) {
...
}
上記は、日付が将来かどうかの確認です。
使用しても問題はありません。次を使用java.util.Date
できます。
int day = 0; //user provided
int month = 0; //user provided
int year = 0; //user provided
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONDAY, month);
calendar.set(Calendar.DAY_OF_MONTH, day);
Date userSubmit = calendar.getTime();
Date now = new Date();
if(userSubmit.after(now)) {
...
}
しかし、日付を使用した流暢で簡単で直感的なAPIが必要な場合は、JodaTimeを使用することをお勧めします
グレゴリオ暦を使用。2 つの日付の日数差を知りたい場合は、次のようなメソッドを作成できます。
public int getDays(GregorianCalendar g1, GregorianCalendar g2) {
int elapsed = 0;
GregorianCalendar gc1, gc2;
if (g2.after(g1)) {
gc2 = (GregorianCalendar) g2.clone();
gc1 = (GregorianCalendar) g1.clone();
}
else {
gc2 = (GregorianCalendar) g1.clone();
gc1 = (GregorianCalendar) g2.clone();
}
gc1.clear(Calendar.MILLISECOND);
gc1.clear(Calendar.SECOND);
gc1.clear(Calendar.MINUTE);
gc1.clear(Calendar.HOUR_OF_DAY);
gc2.clear(Calendar.MILLISECOND);
gc2.clear(Calendar.SECOND);
gc2.clear(Calendar.MINUTE);
gc2.clear(Calendar.HOUR_OF_DAY);
while ( gc1.before(gc2) ) {
gc1.add(Calendar.DATE, 1);
elapsed++;
}
return elapsed;
}
これにより、日数の差が返されます。