Apakah ada format tanggal untuk menampilkan hari dalam seminggu di java?

128

Saya tahu format tanggal seperti
"yyyy-mm-dd"-yang menampilkan tanggal dalam format 2011-02-26
"yyyy-MMM-dd"-yang menampilkan tanggal dalam format2011-FEB-26

untuk digunakan misalnya:

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

Saya ingin format yang akan membantu saya menampilkan hari dalam seminggu seperti 2011-02-MONatau apa pun. Saya hanya ingin hari dalam seminggu ditampilkan dalam karakter dengan bulan dan tahun. Bisakah Anda memberi tahu saya tentang format seperti ini?

rogerstone
sumber
1
Bagaimana kalau hanya menggunakan ddsebagai format?
Johan Sjöberg
3
Saya yakin dokumen API ( download.oracle.com/javase/1.4.2/docs/api/java/text/… ), akan dengan senang hati memberikan jawaban untuk Anda.
M. Jessup
1
apa maksudmu "hari" - hari dalam seminggu, hari dalam sebulan. Dalam contoh Anda, seluruh tanggal ditampilkan. Tolong tunjukkan input dan output yang Anda inginkan.
Bozho
2
Untuk saran umum, lebih baik gunakan -notasi hanya dengan tanggal dalam format ISO (yaitu tahun-bulan-hari). Tanda hubung dipilih di sana karena tidak digunakan untuk format tanggal lain pada saat itu, untuk menghindari kebingungan, dan sekarang semua orang menggunakan pesanan khusus dengan tanda hubung ...
Paŭlo Ebermann

Jawaban:

322

Ini harus menampilkan 'Tue':

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

Ini harus menampilkan 'Selasa':

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

Ini harus menampilkan 'T':

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

Jadi contoh spesifik Anda adalah:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());
Nathan Feger
sumber
5
Solusi yang bagus! Yang saya cari adalah: Senin, 04/04/2016. Jadi dalam kasus saya, new SimpleDateFormat("EEEE, dd/MM/yyyy");jika itu membantu seseorang di masa depan.
AuroMetal
1
Oke, berhasil. EEEEmenampilkan seluruh nama hari dalam seminggu - yaitu 'Senin', 'Selasa' dll.
kosiara - Bartosz Kosarzycki
Saya tidak benar-benar berpikir bahwa situs ini akan ada, apalagi java akhirnya akan beredar pada Date. Itu secara teknis menjawab pertanyaan OP. Namun, saya mungkin dapat menambahkan bagian baru tentang cara kerja java.time baru
Nathan Feger
18

Ya - 'E' berhasil

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));
toolkit
sumber
5
melihat oracle di url javadocs masih terasa aneh.
Nathan Feger
Kami juga menggunakan: DateFormat df = new SimpleDateFormat("yyyy-MM-EEEEEEE");untuk tampilan DayOfWeek yang panjang.
Do Nhu Vy
4
SimpleDateFormat sdf=new SimpleDateFormat("EEE");

EEE adalah singkatan dari day of week misalnya Kamis ditampilkan sebagai Thu.

pengguna2824143
sumber
3

tl; dr

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

java.time

Pendekatan modern menggunakan kelas java.time.

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

Perhatikan bagaimana kami menentukan Localeseperti Locale.CANADA_FRENCHuntuk menentukan bahasa manusia yang digunakan untuk menerjemahkan nama hari itu.

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

ISO 8601

By the way, Anda mungkin akan tertarik dalam standar ISO 8601 minggu skema penomoran: yyyy-Www-d.

2018-W01-2

Minggu # 1 memiliki hari Kamis pertama dalam satu tahun kalender. Minggu dimulai pada hari Senin. Setahun memiliki 52 atau 53 minggu. Beberapa hari terakhir / pertama dalam satu tahun kalender mungkin mendarat di tahun berbasis minggu berikutnya / sebelumnya.

Digit tunggal di akhir adalah hari dalam seminggu, 1-7 untuk Senin-Minggu.

Tambahkan kelas perpustakaan ThreeTen-Extra ke proyek Anda untuk YearWeekkelas tersebut.


Tentang java.time

The java.time kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan tua merepotkan warisan kelas tanggal-waktu seperti java.util.Date, Calendar, & SimpleDateFormat.

Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke kelas java.time .

Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasinya adalah JSR 310 .

Di mana mendapatkan kelas java.time?

Proyek ThreeTen-Extra memperluas java.time dengan kelas tambahan. Proyek ini adalah tempat pembuktian untuk kemungkinan penambahan java.time di masa mendatang. Anda mungkin menemukan beberapa kelas berguna di sini seperti Interval, YearWeek, YearQuarter, dan lebih .

Basil Bourque
sumber
2

Saya tahu pertanyaannya adalah tentang mendapatkan hari dalam seminggu sebagai string (misalnya nama pendek), tetapi bagi siapa saja yang mencari hari numerik dalam seminggu (seperti saya dulu), Anda dapat menggunakan string format "u" baru, didukung sejak Java 7. Misalnya:

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

mengembalikan indeks hari-dari-minggu ini, yaitu: 1 = Senin, 2 = Selasa, ..., 7 = Minggu.

Sal Borrelli
sumber