tl; dr
LocalDate.now( ZoneId.of( "America/Montreal" ) ) // Today’s date.
.plusWeeks( 1 ) // Yields `LocalDate` object
.getDayOfMonth() // Yields `int` number
java.time
Java 8 и более поздние версии поставляются с инфраструктурой java.time.Эти новые классы вытесняют старые java.util.Date
/ .Calendar
классы.Для более старых версий Android см. Проекты ThreeTen-Backport и ThreeTenABP , описанные ниже.
Эти классы включают класс LocalDate
для случаев, когда требуется только дата безвремя суток и без часового пояса.Но обратите внимание, что часовой пояс имеет решающее значение при определении текущей даты, поскольку на востоке раньше наступает новый день.
ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
LocalDate weekLater = today.plusWeeks( 1 ); // Automatically rolls over between months, no problem.
При желании вы можете запросить этот LocalDate
объект для его дня.номер месяца .
int dayOfMonth = weekLater.getDayOfMonth();
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы вытесняют проблемные старые классы даты и времени, такие как java.util.Date
, .Calendar
и & java.text.SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , советует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial .И поищите в Stack Overflow множество примеров и объяснений.
Большая часть функций java.time перенесена в Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android in ThreeTenABP (см. Как использовать… ).
Проект ThreeTen-Extra расширяет Java. время с дополнительными классами.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .
Joda-Time
ОБНОВЛЕНИЕ: проект Joda-Time сейчас находится в режиме обслуживания.Команда советует перейти на классы java.time.Я оставляю этот раздел нетронутым как история.
В Android без технологии Java 8 вы можете добавить в свой проект библиотеку Joda-Time .Но знайте, что проект Joda-Time находится в режиме обслуживания и рекомендует перейти на классы java.time (см. Выше ThreeTenABP для Android).
Joda-Time послужил источником вдохновения для java.time.В этом случае необходимый код очень похож.
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
LocalDate today = LocalDate.now( zone );
LocalDate weekLater = today.plusWeeks( 1 ); // Automatically rolls over between months, no problem.
int dayOfMonth = weekLater.getDayOfMonth();