ТЛ; др
YearQuarter
.from(
LocalDate.of( 2018 , 1 , 23 )
)
ThreeTen-Extra
Правильный ответ от abdmob : использование java.time - разумный путь.
Кроме того, проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time.
Его полезные классы включают в себя:
Текущий квартал
Чтобы узнать текущий квартал, укажите часовой пояс. Определение квартала означает определение даты. А определение даты означает указание часового пояса. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Укажите с помощью правильное имя часового пояса в форме continent/region
. Никогда не используйте 3-4 буквенные сокращения, такие как EST
или IST
.
ZoneId z = ZoneId.of( "America/Montreal" );
YearQuarter yq = YearQuarter.now( z );
Учитывая java.util.Date
Если дано java.util.Date
, сначала преобразовать в тип java.time. Класс Instant
представляет момент на временной шкале в UTC с разрешением наносекунд .
Instant instant = myUtilDate.toInstant();
Назначьте часовой пояс, чтобы получить ZoneDateTime
.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
Создайте YearQuarter
из этого ZonedDateTime
.
YearQuarter yq = YearQuarter.from( zdt );
Используйте по всему коду
Вы должны передавать экземпляры YearQuarter
, а не просто числа или строки. Использование объектов обеспечивает безопасность типов, гарантирует допустимые значения и делает ваш код более самодокументируемым.