LocalDate dizeye nasıl biçimlendirilir?


156

Date adında bir LocalDate değişkeni var, yazdırdığımda 1988-05-05 görüntüler. 05 Mayıs 1988 olarak yazdırmak için bunu dönüştürmek gerekir.


3
DateTimeFormatter sınıfına bir göz atın . Hatta Strings'ye nasıl dönüştüğüne dair örnekler var .
azurefrog

2
Bazı kodları, şimdiye kadar denediklerinizi ve insanların size yardımcı olabilmesi için nelerin çalışmadığını göstermelisiniz.
bvidal

Bunu yapmaya çalıştım ama bu sinir bozucu "kalite standartlarımızı karşılamıyor" nihayet vazgeçtiğim şey, "ben" ile "i" yi düzeltmek zorunda kaldığım için bunu göndermek sadece 15 dakika sürdü.
Jasko

Yanıtlar:


306

SimpleDateFormat, Java 8'de yeni olan LocalDate ile başlıyorsa çalışmaz. Görebildiğim kadarıyla, DateTimeFormatter, http://docs.oracle.com/javase/8/docs/api/java/ time / format / DateTimeFormatter.html .

LocalDate localDate = LocalDate.now();//For reference
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd LLLL yyyy");
String formattedString = localDate.format(formatter);

05 Mayıs 1988 yazılmalıdır. Gün ve aydan önceki dönemi elde etmek için "dd'.LLLL yyyy" kullanmanız gerekebilir.


4
Çok teşekkür ederim, bu yardımcı olur, ancak ayın adını göstermek için 'LLLL' ile çalışmadı, ancak 'MMMM' ile bu garip buldum çünkü belgelerinde bile aksini söylüyor.Ama bir kez daha bana yardım ettiğin için teşekkür ederim .
Jasko

2
Şimdi localDate.format (formatter); hiç çalışmıyor
EngineSense

Hangi programı JDK @ProgrammersBlock kullanıyorsunuz
Lova Chittumuri

29

Kısa olabilir:

LocalDate.now().format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));

3
System.out.println(LocalDate.now().format(DateTimeFormatter.ofPattern("dd.MMMM yyyy")));

Yukarıdaki cevap bugün için gösteriyor


ofPatterns android O
Mehdi

0

ProgrammersBlock mesajlarının yardımıyla bunu buldum. Benim ihtiyaçlarım biraz farklıydı. Bir dize alıp bir LocalDate nesnesi olarak döndürmek gerekiyordu. Eski Takvim ve SimpleDateFormat kullanarak kod verildi. Biraz daha güncel yapmak istedim. Ben de bunu buldum.

    import java.time.LocalDate;
    import java.time.format.DateTimeFormatter;


    void ExampleFormatDate() {

    LocalDate formattedDate = null;  //Declare LocalDate variable to receive the formatted date.
    DateTimeFormatter dateTimeFormatter;  //Declare date formatter
    String rawDate = "2000-01-01";  //Test string that holds a date to format and parse.

    dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE;

    //formattedDate.parse(String string) wraps the String.format(String string, DateTimeFormatter format) method.
    //First, the rawDate string is formatted according to DateTimeFormatter.  Second, that formatted string is parsed into
    //the LocalDate formattedDate object.
    formattedDate = formattedDate.parse(String.format(rawDate, dateTimeFormatter));

}

Umarım bu birisine yardımcı olur, eğer birisi bu görevi yerine getirmenin daha iyi bir yolunu görürse lütfen girişinizi ekleyin.


Daha iyi bir yol görüyorum: sadece LocalDate.parse(rawDate)! String.formatburada tamamen yanlış bir biçimde kullanılıyor, aslında sadece ilk dizeyi döndürüyor; DateTimeFormatterhiç kullanılmadığından; parsebir staticmetodudur LocalDate; formattedDateolduğu değil bir biçimlendirilmiş tarih, hatta bir String(söz konusu istendiği gibi)
user85421

0

Joda lib için LocalDate'i formatlamanın yerleşik bir yolu var

import org.joda.time.LocalDate;

LocalDate localDate = LocalDate.now();
String dateFormat = "MM/dd/yyyy";
localDate.toString(dateFormat);

Henüz sahip değilseniz - bunu build.gradle dosyasına ekleyin:

implementation 'joda-time:joda-time:2.9.5'

Mutlu kodlama! :)


1
Javadoc'a göre değil.
Edward

@Edward, eğer değilse, lütfen kanıtlayın ve daha iyi olduğunu düşündüğünüz bir çözüm sağlayın.
Inoy

1
LocalDate.toString (String pattern) olmadığını kanıtlamamı mı istiyorsunuz? Varsa, lütfen bu yönteme bir referans sağlayın - herhangi bir javadocta bulamadım. Bir çözüme gelince, bu soru zaten buna sahip.
Edward

@Edward, Görünüşe göre onu bulmakta zorlanıyorsun. Cevabım güncellendi.
Inoy

Joda Time "yerleşik" değildir. OP joda.time değil, java.time.LocalDate kullanıyor gibi görünüyor
Edward

-11

Bunu yapmanın çok güzel bir yolu SimpleDateFormatsize nasıl olduğunu göstereceğim:

SimpleDateFormat sdf = new SimpleDateFormat("d MMMM YYYY");
Date d = new Date();
sdf.format(d);

Bir değişken içinde tarih olduğunu görüyorum:

sdf.format(variable_name);

Şerefe.


3
OP, LocalDateörneğin içeriğini belirli bir biçimde yazdırmak istiyor . SimpleDateFormatBurada ona nasıl yardımcı olabilirsiniz ?
Tom
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.