下面列出了org.joda.time.MutableDateTime#isBeforeNow ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
static long nextTimeAlarmWillWorkInMs(@NonNull Alarm alarm) {
final MutableDateTime mDateTime = MutableDateTime.now();
{ //creating a date of today with the hours and minutes of the alarm
mDateTime.setMillisOfSecond(0);
mDateTime.setSecondOfMinute(0);
mDateTime.setHourOfDay(alarm.getHour());
mDateTime.setMinuteOfHour(alarm.getMinute());
}
final int baldDay = getBaldDay();
{ //today or one time
if ((alarm.getDays() & baldDay) == baldDay) {//today may have an alarm
if ((alarm.getDays() == baldDay)) {
if (mDateTime.isBeforeNow())
mDateTime.addWeeks(1); //next week if today's time already passed
return mDateTime.getMillis();
} else {
if (mDateTime.isAfterNow())
return mDateTime.getMillis();
}
} else if (alarm.getDays() == -1) {
if (mDateTime.isBeforeNow())
mDateTime.addDays(1);
return mDateTime.getMillis();
}
}
int selectedBaldDay = baldDay;
{ //find next day
for (int i = baldDay << 1; i != baldDay; i <<= 1) {
if (i > D.Days.SATURDAY)
i = D.Days.SUNDAY;
if ((alarm.getDays() & i) == i) {
selectedBaldDay = i;
break;
}
}
}
int day = baldDayToJodaDay(selectedBaldDay);
mDateTime.setDayOfWeek(day);
if (mDateTime.isBeforeNow()) {
mDateTime.addWeeks(1);
}
return mDateTime.getMillis();
}
private static long nextTimeReminderWillWorkInMs(@NonNull Reminder reminder, Context context) {
final MutableDateTime mDateTime = MutableDateTime.now();
{ //creating a date of today with the hours and minutes of the alarm
mDateTime.setMillisOfSecond(0);
mDateTime.setSecondOfMinute(0);
mDateTime.setHourOfDay(BPrefs.getHour(reminder.getStartingTime(), context));
mDateTime.setMinuteOfHour(BPrefs.getMinute(reminder.getStartingTime(), context));
}
final int baldDay = getBaldDay();
final int days = reminder.getDays();
{ //today or one time
if ((days & baldDay) == baldDay) {//today may have an alarm
if ((days == baldDay)) {
if (mDateTime.isBeforeNow())
mDateTime.addWeeks(1); //next week if today's time already passed
return mDateTime.getMillis();
} else {
if (mDateTime.isAfterNow())
return mDateTime.getMillis();
}
} else if (days == -1) {
if (mDateTime.isBeforeNow())
mDateTime.addDays(1);
return mDateTime.getMillis();
}
}
int selectedBaldDay = baldDay;
{ //find next day
for (int i = baldDay << 1; i != baldDay; i <<= 1) {
if (i > D.Days.SATURDAY)
i = D.Days.SUNDAY;
if ((days & i) == i) {
selectedBaldDay = i;
break;
}
}
}
int day = baldDayToJodaDay(selectedBaldDay);
mDateTime.setDayOfWeek(day);
if (mDateTime.isBeforeNow()) {
mDateTime.addWeeks(1);
}
return mDateTime.getMillis();
}