Javaで曜日を表示する日付形式はありますか?


127


"yyyy-mm-dd"-日付を形式2011-02-26
"yyyy-MMM-dd"で表示する- 日付を形式で表示するなどの日付形式を知っています2011-FEB-26

例:

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

曜日などを表示するのに役立つフォーマットが必要です2011-02-MON。曜日を月と年の文字で表示したいだけです。このような形式を教えていただけますか?


1
dd形式として使用するのはどうですか?
JohanSjöberg、2011

3
APIドキュメント(download.oracle.com/javase/1.4.2/docs/api/java/text/…)が答えを提供してくれると確信しています。
M.ジェサップ2011

1
「日」-曜日、月の意味 あなたの例では、日付全体が表示されます。希望する正確な入力と出力を示してください。
Bozho、2011

2
一般的なアドバイスで-は、ISO形式の日付(つまり、年月日)でのみ表記を使用することをお勧めします。ダッシュは、それが他の日付形式のために使用されていなかったので、混乱を避けるために、一度そこに選出された、そして今、誰もが...ダッシュで彼のカスタム順序付けを使用している
パウロ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
美しいソリューション!私が探していたのは、2016年4月4日月曜日でした。だから私の場合、new SimpleDateFormat("EEEE, dd/MM/yyyy");将来誰かを助けるなら。
AuroMetal

1
はい、動作します。EEEE曜日の完全な名前、つまり「月曜日」、「火曜日」などを表示します
kosiara-Bartosz Kosarzycki

私はこのサイトが周りにあるとはまったく考えていませんでした。ましてやjavaがついにDateにとりつかれるようになることは言うまでもありません。技術的にはOPの質問に答えます。しかし、私はおそらくどのように新しいjava.timeスタッフ作品に新しいセクションを追加することができます
ネイサンFeger

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
javadocsのURLでoracleを見ると、まだ奇妙な感じがします。
Nathan Feger、2011

以下も使用します:DateFormat df = new SimpleDateFormat("yyyy-MM-EEEEEEE");長いDayOfWeekの表示。
Nhu Vyを2015年

4
SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEEは曜日を表します。たとえば、木曜日は木として表示されます。



3

tl; dr

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週は暦年の最初の木曜日です。週は月曜日に始まります。1年は52週間または53週間です。暦年の最後の/最初の数日は、次の/前の週に基づく年になる場合があります。

末尾の1桁は曜日で、月曜日から日曜日は1〜7です。

クラスのプロジェクトにThreeTen-Extraライブラリクラスを追加しますYearWeek


java.timeについて

java.timeのフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスjava.util.DateCalendar&を、SimpleDateFormat

ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイス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機能の多くは、ThreeTen-BackportでJava 6および7にバックポートされています。
  • アンドロイド
    • Androidの新しいバージョンには、java.timeクラスの実装がバンドルされています。
    • 以前のAndroidでは、ThreeTenABPプロジェクトはThreeTen-Backport(上記)を採用しています。ThreeTenABPの使用方法…を参照してください。

ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeに将来追加される可能性があることを証明する場です。あなたはここにいくつかの有用なクラスのような見つけることがIntervalYearWeekYearQuarter、および多くを


2

質問が曜日(例:短い名前)として取得することに関するものであることはわかっていますが、(私がそうであったように)数値の曜日を探している人は、サポートされている新しい「u」フォーマット文字列を使用できます。 Java 7以降。例:

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

つまり、今日の曜日インデックスを返します。つまり、1 =月曜日、2 =火曜日、...、7 =日曜日です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.