Чи існує формат дати для відображення дня тижня в java?


128

Мені відомі формати дат, такі як-
"yyyy-mm-dd"який відображає дату у форматі- 2011-02-26
"yyyy-MMM-dd"який відображає дату у форматі2011-FEB-26

для використання, наприклад:

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

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


1
Як щодо просто використання ddяк формату?
Йохан Шьоберг

3
Я впевнений, що документи API ( download.oracle.com/javase/1.4.2/docs/api/java/text/… ) будуть раді надати вам відповідь.
М. Джессуп

1
що означає «день» - день тижня, день місяця. У вашому прикладі відображається вся дата. Будь ласка, покажіть точний вхід та вихід, який потрібно.
Божо

2
За загальною порадою, краще використовувати -позначення лише з датами у форматі ISO (тобто рік-місяць-день). Тире було обрано там, оскільки його не використовували для інших форматів дати, щоб уникнути плутанини, і тепер кожен користується своїм замовленням із тире ...
Paŭlo Ebermann

Відповіді:


322

Тут має відображатися "Вт":

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());

5
Прекрасне рішення! Що я шукав, це: понеділок, 04.04.2016. Так що в моєму випадку, new SimpleDateFormat("EEEE, dd/MM/yyyy");якщо це допоможе комусь у майбутньому.
AuroMetal

1
Добре, це працює. EEEEвідображає цілі назви днів тижня - тобто "понеділок", "вівторок" тощо
kosiara - Bartosz Kosarzycki

Я не дуже думав, що цей сайт навіть буде навколо, не кажучи вже про те, що Ява нарешті обійдеться до застави на Дата. Це технічно відповідає на питання ОП. Однак я, мабуть, можу додати новий розділ про те, як працюють нові речі java.time
Натан Фегер

18

Так - "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));

5
побачити оракул у URL-адресі Javadoc все ще дивно.
Натан Фегер

Ми також використовуємо: DateFormat df = new SimpleDateFormat("yyyy-MM-EEEEEEE");для відображення довгих DayOfWeek.
Робіть Nhu Vy



3

тл; д-р

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-ExtraYearWeek .


Про java.time

Java.time каркас вбудований в Java 8 і пізніших версій. Ці класи витісняти неприємні старі застарілі класи дати і часу , такі як java.util.Date, Calendar, і SimpleDateFormat.

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

Щоб дізнатися більше, дивіться навчальний посібник Oracle . І шукайте переповнення стека за багатьма прикладами та поясненнями. Специфікація - 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, і більш .


2

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.