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?


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

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


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

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



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 .


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.