Есть ли формат даты для отображения дня недели в java?

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

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

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

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

Ответ 1

Это должно отображать "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());

Ответ 3

SimpleDateFormat sdf=new SimpleDateFormat("EEE");

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

Ответ 5

ТЛ; др

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

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

Ответ 6

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

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

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