Java で compareTo メソッドを使用して、特定の日付が別の日付から 24 時間以上経過しているかどうかを確認しています。
日付を比較する整数を決定するにはどうすればよいですか?
Calendar
クラスを使用します。すでにDate
オブジェクトがある場合でも、次を使用できますCalendar
。
Date aDate = . . .
Calendar today = Calendar.getInstance();
today.setTime(aDate);
Calendar tomorrow = Calendar.getInstance();
tomorrow.setTime(aDate);
tomorrow.add(Calendar.DAY, 1);
Date tomorrowDate = tomorrow.getTime(); // if you need a Date object
答えは、何を達成したいかによって異なります。
1 つの方法は、ミリ秒単位で違いを確認することです。ミリ秒単位の 24 時間は、
24 * 60 * 60 * 1000 = 86400000
h min sec millis
(コードでは、TimeUnit.HOURS.toMillis(24)
どちらの IMO がよりわかりやすいかを記述することもできます)
これで、2 つの日付の差 (ミリ秒単位) が 86400000 より大きいかどうかを確認できます。
これは、日付が昨日であるかどうかを確認するのに役立ちます
public static final long ONE_MINUTE = 60 * 1000;
public static final long ONE_HOUR = 60 * ONE_MINUTE;
public static final long ONE_DAY = 24 * ONE_HOUR;
public static boolean isYesterday(Date d) {
return DateUtils.isToday(d.getTime() + ONE_DAY);
}
アクティビティ OnCreate で
//Get current date - yymmdd increases only
SimpleDateFormat formatter = new SimpleDateFormat("yyMMdd");
Date now = new Date();
int nowTime= Integer.parseInt(formatter.format(now));
//Get last login date - stored in db
int lastLogin= dbManager.getLastLoginDate();
//Check if next day
if(nowTime> lastLogin){
//Do your stuff
//Update last login date
dbManager.saveLoginDate(nowTime);
}
日付間のデルタを見つけるには: 要するに、
long endL = end.getTimeInMillis() + end.getTimeZone().getOffset( end.getTimeInMillis() );
long startL = this.getTimeInMillis() + this.getTimeZone().getOffset(this.getTimeInMillis());
return (endL - startL) / MILLISECS_PER_DAY;
詳細に、