ZonedDateTime
является неизменным представлением даты и времени с часовым поясом. Таким образом, даже если вы вызвали plusDays(1)
, исходное время в ZoneDateTime
объекте остается неизменным.
plusDays()
возвращает новый объект ZonedDateTime
с измененным значением. Который в вашем коде вы нигде не назначаете. Поэтому вам нужно заменить
zdt.plusDays(1);
на zdt = zdt.plusDays(1);
, чтобы он работал так, как вы предполагали.
Модифицированный код:
private static void setNextNotification(Context context) {
LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt = ldt.atZone(ZoneId.of("Europe/Stockholm"));
DayOfWeek dayOfWeek = zdt.getDayOfWeek();
Intent intent = new Intent(context, ReminderReceiver.class);
PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
if(dayOfWeek.getValue() == 2){
zdt = zdt.plusDays(1);
alarmManager.set(AlarmManager.RTC_WAKEUP, zdt.toInstant().toEpochMilli(), alarmIntent);
}
}