Есть ли формат даты для отображения дня недели в 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());
Ответ 2
Yep - '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));
Ответ 3
SimpleDateFormat sdf=new SimpleDateFormat("EEE");
EEE обозначает день недели, например, четверг отображается как четверг.
Ответ 4
Используйте "E"
См. раздел Шаблоны даты и времени:
JavaDocs для SimpleDateFormat
Ответ 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?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти некоторые полезные классы, такие как Interval
, YearWeek
, YearQuarter
и другие.
Ответ 6
Я знаю, что вопрос состоит в том, чтобы получить день недели в виде строки (например, короткое имя), но для любого, кто ищет числовой день недели (как я), вы можете использовать новую строку формата "u", поддерживаемую начиная с Java 7. Например:
new SimpleDateFormat("u").format(new Date());
возвращает индекс дня недели сегодня, а именно: 1 = понедельник, 2 = вторник,..., 7 = воскресенье.