Java'da haftanın gününü gösterecek bir tarih formatı var mı?


128

Ben gibi tarih biçimleri biliyoruz
"yyyy-mm-dd"formatında -ki görüntüler tarihe 2011-02-26
"yyyy-MMM-dd"görüntüler biçiminde tarih -ki2011-FEB-26

örneğin kullanılacak:

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

Haftanın gününü 2011-02-MONveya herhangi bir şeyi göstermeme yardımcı olacak bir format istiyorum . Sadece haftanın gününün ay ve yıl ile karakterlerle görüntülenmesini istiyorum. Bana bunun gibi bir formattan bahseder misin?


1
Sadece ddformat olarak kullanmaya ne dersiniz ?
Johan Sjöberg

3
Eminim API dokümanları ( download.oracle.com/javase/1.4.2/docs/api/java/text/… ) size bir cevap vermekten mutluluk duyacaktır.
M.Jessup

1
ne demek "gün" - haftanın günü, ayın günü. Örneğinizde tarihin tamamı görüntüleniyor. Lütfen tam olarak istediğiniz girişi ve çıkışı gösterin.
Bozho

2
Genel bir tavsiyede, -gösterimi yalnızca ISO formatındaki tarihlerle (yani yıl-ay-gün) daha iyi kullanın . Çizgi, karışıklığı önlemek için o sırada başka tarih formatları için kullanılmadığı için seçildi ve şimdi herkes kendi özel siparişini çizgi ile kullanıyor ...
Paŭlo Ebermann

Yanıtlar:


323

Bu, 'Salı'yı göstermelidir:

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

Bu, 'Salı'yı göstermelidir:

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

Bu, 'T' göstermelidir:

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

Yani sizin özel örneğiniz şöyle olacaktır:

new SimpleDateFormat("yyyy-MM-EEE").format(new Date());

5
Güzel çözüm! Aradığım şey şuydu: 04/04/2016 Pazartesi. Benim durumumda, new SimpleDateFormat("EEEE, dd/MM/yyyy");gelecekte birine yardım ederse.
AuroMetal

1
Tamam, işe yarıyor. EEEEhaftanın gününün tam adlarını görüntüler - yani 'Pazartesi', 'Salı' vb.
kosiara - Bartosz Kosarzycki

Java'nın nihayet Date'de kefaletle dolması şöyle dursun, bu sitenin etrafta olacağını gerçekten düşünmemiştim. Teknik olarak OP'lerin sorusuna cevap veriyor. Ancak, muhtemelen yeni java.time öğesinin nasıl çalıştığına dair yeni bir bölüm ekleyebilirim
Nathan Feger


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

EEE, haftanın gününü ifade eder, örneğin Perşembe Perş. Olarak görüntülenir.



3

tl; Dr.

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

java.time

Modern yaklaşım java.time sınıflarını kullanır.

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

Biz belirtmek nasıl Not Localegibi Locale.CANADA_FRENCHgünün adını çevirmek için kullanılan insan dilini belirlemek için.

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

ISO 8601

Bu arada, standart ilginizi çekebilir ISO 8601 hafta numaralandırma düzeni: yyyy-Www-d.

2018-W01-2

1. Hafta, takvim yılının ilk Perşembe günüdür. Hafta Pazartesi başlıyor. Bir yılda 52 veya 53 hafta vardır. Bir takvim yılının son / ilk birkaç günü, bir sonraki / önceki hafta bazlı yıla denk gelebilir.

Sondaki tek hane, Pazartesi-Pazar için 1-7 haftanın günüdür.

Ekle ThreeTen-Extra için projenize kütüphane sınıfı YearWeeksınıfta.


Hakkında java.time

Java.time çerçevesi daha sonra Java 8 ve yerleşiktir. Bu sınıflar zahmetli eski yerini mirası gibi tarih-saat sınıfları java.util.Date, Calendar& SimpleDateFormat.

Şu anda bakım modunda olan Joda-Time projesi, java.time sınıflarına geçişi tavsiye ediyor .

Daha fazla bilgi edinmek için Oracle Eğitimi'ne bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .

Java.time derslerini nereden edinebilirim?

ThreeTen-Ekstra proje ek sınıfları ile java.time uzanır. Bu proje, java.time uygulamasına gelecekteki olası eklemeler için kanıtlayıcı bir zemindir. Burada bazı yararlı sınıfları gibi bulabilir Interval, YearWeek, YearQuarter, ve daha .


2

Sorunun haftanın gününü dize olarak almakla ilgili olduğunu biliyorum (örn. Kısa ad), ancak haftanın sayısal gününü arayanlar için (eskiden olduğu gibi), desteklenen yeni "u" biçim dizesini kullanabilirsiniz Java 7'den beri. Örneğin:

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

bugünün haftanın günü dizinini döndürür, yani: 1 = Pazartesi, 2 = Salı, ..., 7 = Pazar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.