2015-09-12 11 views
9

d. MMM u gibi bir modelden oluşturulan bir Java 8 DateTimeFormatter yalnızca TextStyle.SHORT (ör. 13. Feb 2015) tarafından tanımlanan stilde yazılan tarihleri ​​içeren tarihleri ​​ayırabilir, d. MMMM u tarafından oluşturulan bir DateTimeFormatter yalnızca tanımlanan stilde yazılmış tarihleri ​​içeren tarihleri ​​ayırabilir TextStyle.FULL tarafından (ör. 13. February 2015).Ay için hem TextStyle.SHORT hem de TextStyle.FULL ile tarih ayırmak mümkün mü?

"Eski" SimpleDateFormat öğesinde, "MMM" ve "MMMM" arasındaki fark yalnızca biçimlendirme için değil, ayrıştırma için önemliydi, bu nedenle hem TAM hem de KISA formunu anlayan bir çözümleyici oluşturmak kolayca mümkün oldu ay isimleri

Bunu yapabilecek bir Java 8 DateTimeFormatter oluşturmak mümkün mü? Ya da her zaman FULL ve bir tane KISA modeliyle iki ayrıştırıcı oluşturmak zorunda mıyım?

cevap

6

Farklı ay desenler opsiyonel yapabilir:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d. [MMMM][MMM] u HH:mm:ss z", Locale.US); 

    ZonedDateTime zdt1 = ZonedDateTime.parse("4. Jan 2015 00:00:00 UTC", formatter); 
    ZonedDateTime zdt2 = ZonedDateTime.parse("4. January 2015 00:00:00 UTC", formatter); 

    System.out.println(zdt1); 
    System.out.println(zdt2); 

Çıktı:

2015-01-04T00:00Z[UTC] 
2015-01-04T00:00Z[UTC] 

DÜZENLEME

Bu biçimlendirici sadece parse() için kullanılabilir

, sahip olacakiçin farklı bir tane kullanmak.

+0

Tamam, bunu görüyorum sadece aşağı "şimdi Ocak 15 Ocak" gibi "kırık" dizeleri ayrıştırabilen, ama bu gerçekten büyük bir sorun değil. Yine de iki Biçimlendirici/Parser'in sahip olması, daha zarif bir çözüm olmasa bile kararsız ... – David

+0

@David Sadece iki tane varsa, hangi çözümü seçeceğinizin gerçekten bir önemi yok. Ancak, daha fazla format türünü ayrıştırma olasılığınız varsa, muhtemelen bir ayrıştırıcı ve bir biçimlendirici seçmelisiniz (isteğe bağlı parçaları bile yerleştirebilirsiniz). – Cinnam

İlgili konular