ТЛ; др
myUtilDate.toInstant() // Convert from legacy class to modern. `Instant` is a point on the timeline in UTC.
.atZone( // Adjust from UTC to a particular time zone to determine date. Renders a `ZonedDateTime` object.
ZoneId.of( "America/Montreal" ) // Better to specify desired/expected zone explicitly than rely implicitly on the JVM’s current default time zone.
) // Returns a `ZonedDateTime` object.
.getMonthValue() // Extract a month number. Returns a `int` number.
java.time
Подробности
Правильный ответ Ортомалы Локни за использование java.time . И вы должны использовать java.time, поскольку это гигантское улучшение по сравнению со старыми классами java.util.Date/.Calendar. См. Oracle Tutorial на java.time.
Я добавлю код, показывающий, как использовать java.time без учета java.util.Date, когда вы начинаете с новым кодом.
Использование java.time в двух словах ... Instant
- это момент времени на UTC. Примените часовой пояс (ZoneId
), чтобы получить ZonedDateTime
.
Класс Month
представляет собой сложный enum для представления месяца в целом. Это перечисление имеет удобные методы, такие как получение локализованного имени. И будьте уверены, что номер месяца в java.time является нормальным, 1-12, а не нонсенсом (0-11), найденным в java.util.Date/.Calendar.
Чтобы получить текущую дату-время, часовой пояс имеет решающее значение. В любой момент дата не одинакова во всем мире. Поэтому месяц не одинаков во всем мире, если он близок к концу / началу месяца.
ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or 'ZoneOffset.UTC'.
ZonedDateTime now = ZonedDateTime.now( zoneId );
Month month = now.getMonth();
int monthNumber = month.getValue(); // Answer to the Question.
String monthName = month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH );
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.*
классах.
Где получить классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и more .