我正在使用 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
答案取决于您想要实现的目标。
一种方法,可能是以毫秒为单位检查差异。以毫秒为单位的 24 小时可以通过以下方式计算
24 * 60 * 60 * 1000 = 86400000
h min sec millis
(在代码中,您还可以编写TimeUnit.HOURS.toMillis(24)
哪个 IMO 更具描述性)
所以现在你可以检查两个日期之间的差异(以毫秒表示)是否大于 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;
详细地,