我有2个日期分配给日历实例。 (现在,然后)。
Calendar currentDate = new Calendar().getInstance();
Calendar oldDate = Calendar.getInstance();
oldDate.setTimeInMillis(plugin.joinTimeLog.getLong(p.getName() + ".time"));
基本上,我的目标是每个月(每30天)只发生一次事件。如果30天还没有过去,那就告诉他们一个月过去多久。
EG。 " 21d 17hrs 54mins直到你有权访问。"
这是我当前的代码,似乎提供了完全不正确的天数和小时数(注意;我还没有设置分钟)。
Calendar timeLeft = Calendar.getInstance();
timeLeft.setTimeInMillis(currentDate.getTimeInMillis() - (oldDate.getTimeInMillis() + (60 * 60 * 24 * 30 * 1000)));
int daysLeft = daysBetween(currentDate, timeLeft);
int hoursLeft = Math.round(hoursBetween(currentDate, timeLeft));
然后我使用以下代码来确定是否已过了一个月;
if (daysLeft <= 0) {
以下是我获取daysLeft和hoursLeft的方法;
public int daysBetween(Calendar d1, Calendar d2) {
return (int)( (d1.getTimeInMillis() - d2.getTimeInMillis()) / (1000 * 60 * 60 * 24));
}
public int hoursBetween(Calendar d1, Calendar d2) {
return (int)( (d1.getTimeInMillis() - d2.getTimeInMillis()) / (1000 * 60 * 60));
}