Я использую openjdk версию 1.8.0_112-release для разработки, но вам также нужно будет поддерживать предыдущие версии JDK (pre-Java-8) - поэтому не можете использовать java.time
.
Я пишу класс, чтобы рассчитать дату, чтобы увидеть, была ли сохраненная дата до текущей даты, что означает, что она истекла.
Однако я не уверен, что сделал это правильно. Я использую класс LocalDate
для вычисления дней. Истечение рассчитывается начиная с даты и времени, когда пользователь нажал кнопку "Сохранить". Эта дата будет сохранена и будет выполнена проверка с этой сохраненной датой и временем и текущей датой и временем, то есть когда пользователь войдет в систему.
Это лучший способ сделать это? Я хотел бы придерживаться класса LocalDate
.
import org.threeten.bp.LocalDate;
public final class Utilities {
private Utilities() {}
public static boolean hasDateExpired(int days, LocalDate savedDate, LocalDate currentDate) {
boolean hasExpired = false;
if(savedDate != null && currentDate != null) {
/* has expired if the saved date plus the specified days is still before the current date (today) */
if(savedDate.plusDays(days).isBefore(currentDate)) {
hasExpired = true;
}
}
return hasExpired;
}
}
Я использую класс следующим образом:
private void showDialogToIndicateLicenseHasExpired() {
final LocalDate currentDate = LocalDate.now();
final int DAYS_TO_EXPIRE = 3;
final LocalDate savedDate = user.getSavedDate();
if(hasDateExpired(DAYS_TO_EXPIRE, savedDate, currentDate)) {
/* License has expired, warn the user */
}
}
Я ищу решение, которое будет учитывать часовые пояса. Если срок действия лицензии истекает через 3 дня, пользователь должен был перейти в другой часовой пояс. то есть они могут быть впереди или отставать по часам. Срок действия лицензии еще не закончен.