java.time
int monthVal = 9; // 0-based index, so 9 means October
int yearVal = 2018;
YearMonth ym = YearMonth.of(yearVal, Month.values()[monthVal]);
System.out.println("Year and month selected: " + ym);
Выходные данные из этого фрагмента:
Выбранные год и месяц: 2018-10
Кажется изВаш код, который вам нужен, начало и конец интервала, составляющего выбранный месяц.Если это может сработать для вас, я предлагаю вам получить интервал полуоткрытый , то есть от начальной даты включительно до конечной даты эксклюзивной .Это избавляет вас от странностей установки времени 23: 59: 59,999 и так далее.В этом простом фрагменте я устанавливаю только даты, поскольку этого действительно достаточно для представления интервала:
LocalDate startDateInclusive = ym.atDay(1);
LocalDate endDateExclusive = ym.plusMonths(1).atDay(1);
System.out.println("From " + startDateInclusive + " inclusive to "
+ endDateExclusive + " exclusive");
С 2018-10-01 включительно до 2018-11-01 эксклюзивно
Если вам нужны устаревшие Date
объекты для какого-либо устаревшего API, который вы не можете изменить прямо сейчас:
Instant startInstantInclusive = startDateInclusive
.atStartOfDay(ZoneId.systemDefault())
.toInstant();
Date oldfashionedDate = DateTimeUtils.toDate(startInstantInclusive);
System.out.println("As old-fashioned Date: " + oldfashionedDate);
На моем компьютере в часовом поясе Европы / Копенгагена я получил:
Как старомодно Дата: Пн. 01 01 00:00:00 CEST 2018
Аналогично для даты окончания.
Вопрос: Могу ли я использовать Java.time на Android?
Да, java.time прекрасно работает на старых и новых устройствах Android.Для этого требуется как минимум Java 6 .
- В Java 8 и более поздних версиях и на более новых устройствах Android (начиная с уровня API 26) современный встроенный API.В этом случае используйте
Date oldfashionedDate = Date.from(startInstantInclusive)
только для согласования от Instant
до Date
. - В Java 6 и 7 получите ThreeTen Backport, бэкпорт новых классов (ThreeTen для JSR 310; см. Ссылкивнизу).
- На более старых версиях Android используется Android-версия ThreeTen Backport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из
org.threeten.bp
с подпакетами.
Ссылки