tl; др
Использование java.time …
LocalDate.parse( // Generate `LocalDate` object from String input.
"23/2/2010" ,
DateTimeFormatter.ofPattern( "d/M/uuuu" )
)
.getDayOfWeek() // Get `DayOfWeek` enum object.
.getDisplayName( // Localize. Generate a String to represent this day-of-week.
TextStyle.SHORT_STANDALONE , // How long or abbreviated. Some languages have an alternate spelling for "standalone" use (not so in English).
Locale.US // Or Locale.CANADA_FRENCH and such. Specify a `Locale` to determine (1) human language for translation, and (2) cultural norms for abbreviation, punctuation, etc.
)
Вт
См. код запускается на IdeOne.com (но там работает только Locale.US
).
java.time
См. мой пример кода выше и см. правильный ответ дляjava.time от Przemek .
Порядковый номер
, если требуется только порядковый номер дня, как его можно получить?
Дляпорядковый номер, рассмотрите возможность обхода объекта перечисления DayOfWeek
, например DayOfWeek.TUESDAY
.Помните, что DayOfWeek
- это смарт-объект, а не просто строка или просто целое число. Использование этих объектов enum делает ваш код более самодокументируемым, обеспечивает допустимые значения и обеспечивает type-safety .
Но если вы настаиваете, спросите DayOfWeek
о числе .Вы получаете 1-7 за понедельник-воскресенье по стандарту ISO 8601 .
int ordinal = myLocalDate.getDayOfWeek().getValue() ;
Joda-Time
ОБНОВЛЕНИЕ: Проект Joda-Time сейчас находится в режиме обслуживания.Команда советует перейти на классы java.time.Инфраструктура java.time встроена в Java 8 (а также перенесена на Java 6 & 7 и , дополнительно адаптирована для Android ).
Вот пример кода, использующего библиотеку Joda-Time версии 2.4, как упомянуто в принятом ответе Божо .Joda-Time намного превосходит классы java.util.Date/.Calendar в комплекте с Java.
LocalDate
Joda-Time предлагает LocalDate
класс для представления только даты без какого-либо времени суток или часового пояса.Как раз то, к чему призывает этот Вопрос.В старых классах java.util.Date/.Calendar, входящих в состав Java, эта концепция отсутствует.
Parse
Анализ строки в значении даты.
String input = "23/2/2010";
DateTimeFormatter formatter = DateTimeFormat.forPattern( "d/M/yyyy" );
LocalDate localDate = formatter.parseLocalDate( input );
Extract
Извлечение из значения даты числа и номера дня недели.
int dayOfWeek = localDate.getDayOfWeek(); // Follows ISO 8601 standard, where Monday = 1, Sunday = 7.
Locale locale = Locale.US; // Locale specifies the human language to use in determining day-of-week name (Tuesday in English versus Mardi in French).
DateTimeFormatter formatterOutput = DateTimeFormat.forPattern( "E" ).withLocale( locale );
String output = formatterOutput.print( localDate ); // 'E' is code for abbreviation of day-of-week name. See Joda-Time doc.
String outputQuébécois = formatterOutput.withLocale( Locale.CANADA_FRENCH ).print( localDate );
Дамп
Дамп на консоль.
System.out.println( "input: " + input );
System.out.println( "localDate: " + localDate ); // Defaults to ISO 8601 formatted strings.
System.out.println( "dayOfWeek: " + dayOfWeek );
System.out.println( "output: " + output );
System.out.println( "outputQuébécois: " + outputQuébécois );
Запуск
При запуске.
input: 23/2/2010
localDate: 2010-02-23
dayOfWeek: 2
output: Tue
outputQuébécois: mar.
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии.Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: JSR 310 .
Где получить классы java.time?
Проект ThreeTen-Extra расширяет Java.время с дополнительными занятиями.Этот проект является полигоном для возможных будущих дополнений к java.time.Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и еще .