Существует ли формат даты для отображения дня недели в java? - PullRequest
111 голосов
/ 25 февраля 2011

Я знаю форматы даты, такие как"yyyy-mm-dd" - который отображает дату в формате 2011-02-26"yyyy-MMM-dd" - который отображает дату в формате 2011-FEB-26

для использования, например:

SimpleDateFormat formatter = new SimpleDateFormat(
                "yyyy/MMM/dd ");

Я хочу формат, который помог бы мне отображать день недели, например 2011-02-MON или что-нибудь.Я просто хочу, чтобы день недели отображался в символах с месяцем и годом.Можете ли вы рассказать мне о таком формате?

Ответы [ 6 ]

269 голосов
/ 25 февраля 2011

Это должно отображать 'Tue':

new SimpleDateFormat("EEE").format(new Date());

Это должно отображать 'вторник':

new SimpleDateFormat("EEEE").format(new Date());

Это должно отображать 'T':

new SimpleDateFormat("EEEEE").format(new Date());

Ваш конкретный пример будет таким:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());
16 голосов
/ 25 февраля 2011

Да - 'E' делает трюк

http://download.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

Date date = new Date();
DateFormat df = new SimpleDateFormat("yyyy-MM-E");
System.out.println(df.format(date));
4 голосов
/ 27 сентября 2013
SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEE обозначает день недели, например, четверг отображается как чт.

3 голосов
/ 03 февраля 2018

ТЛ; др

LocalDate.of( 2018 , Month.JANUARY , 23 )
         .format( DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US )  )

java.time

Современный подход использует классы java.time.

LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;

Обратите внимание, как мы указываем Locale, например, Locale.CANADA_FRENCH, чтобы определить человеческий язык, используемый для перевода названия дня.

DateTimeFormatter f = DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US ) ;
String output = ld.format( f ) ;

ISO 8601

Кстати, вас может заинтересовать стандартная ISO 8601 неделя схема нумерации: yyyy-Www-d.

2018-W01-2

Неделя № 1 имеет первый четверг календарного года. Неделя начинается в понедельник. В году 52 или 53 недели. Последние / первые несколько дней календарного года могут приземляться в следующем / предыдущем недельном году.

Единственная цифра в конце - день недели, 1-7 для понедельника-воскресенья.

Добавьте класс библиотеки ThreeTen-Extra в свой проект для класса YearWeek.


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы заменяют проблемные старые устаревшие классы даты и времени, такие как java.util.Date, Calendar, & SimpleDateFormat.

Проект Joda-Time , теперь в режиме обслуживания , рекомендует выполнить переход на классы java.time .

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Где получить классы java.time?

  • Java SE 8 , Java SE 9 и выше
    • Встроенный.
    • Часть стандартного Java API с комплексной реализацией.
    • Java 9 добавляет некоторые незначительные функции и исправления.
  • Java SE 6 и Java SE 7
    • Большая часть функциональности java.time перенесена на Java 6 и 7 в ThreeTen-Backport .
  • Android
    • Более поздние версии Android связывают реализации классов java.time.
    • Для более ранних версий Android проект ThreeTenABP адаптируется ThreeTen-Backport (упоминалось выше). См. Как использовать ThreeTenABP… .

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval, YearWeek, YearQuarter и more .

3 голосов
/ 25 февраля 2011

Использование «E»

См. Раздел по Шаблоны даты и времени :

JavaDocs для SimpleDateFormat

0 голосов
/ 14 июня 2019

Я знаю, что вопрос в том, чтобы получить день недели в виде строки (например, короткое имя), но для любого, кто ищет числовой день недели (как я), вы можете использовать новый формат "u" строка, поддерживаемая начиная с Java 7. Например:

new SimpleDateFormat("u").format(new Date());

возвращает сегодняшний индекс дня недели, а именно: 1 = понедельник, 2 = вторник, ..., 7 = воскресенье.

...