YearMonth
класс
YearMonth
класс представляет собой, хорошо, год и месяц.
java.time
Этот класс является частью java.time структуры, построенной в Java 8 и более поздних версий. Эти классы вытесняют старые неприятные классы времени, такие как java.util.Date. См. Oracle Tutorial.Большая часть функциональности была перенесена на Java 6 & 7 в ThreeTen-Backport и далее адаптирована для Android в ThreeTenABP.
Разбор строки
Используйте DateTimeFormatter
для разбора вашей входной строки. Когда столетие опущено, предполагается 21-й век 20
.
String input = "0616";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("MMyy");
YearMonth expiration = YearMonth.parse (input , formatter);
Дамп для консоли.
System.out.println ("yearMonth = " + yearMonth);
годМесяц = 2016-06
Time Zone
Сравнить с текущим YearMonth
. Определение текущего года-месяца означает получение текущей даты. И для определения текущей даты требуется часовой пояс. Вопрос и другие ответы игнорируют эту важную проблему. В любой момент времени по всему миру изменяется часовой пояс. Через несколько минут после того, как Париж стал новым днем, но все еще «вчера» в Монреале.
Если в качестве необязательного аргумента не указано, текущий часовой пояс JVM по умолчанию неявно применяется. Текущий по умолчанию can change at any time, даже во время выполнения (!). Лучше указать ожидаемый/желаемый часовой пояс.
ZoneId zoneId = ZoneId.of("America/Montreal");
YearMonth currentYearMonth = YearMonth.now(zoneId);
Если бизнес-правила случаются использовать UTC как часовой пояс, проходит под рукой постоянной ZoneOffset.UTC
в качестве зоны аргумента времени.
Сравнить
Наконец, мы сравниваем с помощью isBefore
, isAfter
или equals
.
Boolean expired = currentYearMonth.isAfter(expiration);
Вместо обходе строки или целые числа за год и месяц, проходят вокруг этих YearMonth
объектов. Вы получаете преимущества безопасности типов, гарантированных действительных значений и более самодокументирующего кода.
«обрабатывает поддельный пользователя кредитной карты» ... поверхностна :) –
'dateformat.format (дата)' возвращает a 'String', вам просто нужно преобразовать его в' int', используя 'Integer.parseInt (...)'. – Jashaszun