ТЛ; др
Как я могу контролировать использование заглавных букв
Вы не. Разные языки и разные культуры имеют разные правила относительно заглавных букв, знаков препинания, аббревиатур и т. Д.
Month.from( LocalDate.now( ZoneId.of( "Pacific/Auckland" ) ) ) // Get current month.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) // Localize automatically. Specify `Locale` to determine human language and cultural norms for translation.
Février
LocalDate.now( ZoneId.of( "Pacific/Auckland" ) ) // Get current date as seen by people in a certain region (time zone).
.getDayOfWeek() // Get the day-of-week as a pre-defined `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH )
Ланди
Локализуйте
Как уже говорили другие, вы не должны навязывать свои собственные приходские (американский английский?) Понятия капитализации. Используйте приличную библиотеку даты и времени, и пусть она автоматически локализуется для вас.
java.time
Вы используете ужасные старые классы даты и времени, которые теперь унаследованы, заменены классами java.time.
Класс LocalDate
представляет значение только для даты без времени суток и без часового пояса.
Часовой пояс имеет решающее значение при определении даты. В любой момент времени дата меняется по всему земному шару в зависимости от зоны. Например, через несколько минут после полуночи в Париж Франция - это новый день, а еще "вчера" в Монреаль Квебек .
Укажите собственное имя часового пояса в формате continent/region
, например America/Montreal
, Africa/Casablanca
или Pacific/Auckland
. Никогда не используйте 3-4-буквенное сокращение, например EST
или IST
, поскольку они не истинные часовые пояса, не стандартизированы и даже не уникальны (!).
ZoneId z = ZoneId.of( "Asia/Kolkata" );
LocalDate today = LocalDate.now( z );
Чтобы работать с месяцем, извлеките объект перечисления Month
. То же самое для дня недели, DayOfWeek
.
Звоните getDisplayName
. Передайте TextStyle
для сокращения. Передайте Locale
, чтобы определить (а) человеческий язык для перевода названия дня, названия месяца и т. Д., И (б) культурные нормы, решающие вопросы сокращения, капитализации, пунктуации, разделителей , и тому подобное. Обратите внимание, что Locale
не имеет ничего общего с часовым поясом.
Month m = today.getMonth() ;
String mNameQuébec = m.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
String mNameGermany = m.getDisplayName( TextStyle.FULL , Locale.GERMANY ) ;
... и ...
DayOfWeek dow = today.getDayOfWeek() ;
String dowNameQuébec = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
String dowNameGermany = dow.getDisplayName (TextStyle.FULL, Locale.GERMANY);
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Используя драйвер JDBC , соответствующий JDBC 4.2 или более поздней версии, вы можете напрямую обмениваться объектами java.time с вашей базой данных. Нет необходимости в строках или java.sql. * Классах.
Где получить классы java.time?
ThreeTen-Extra Проект расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и еще .