2016-03-25 14 views
2

'a bakıyorum ParseException'ı French locale'de SimpleDateFormat ile alıyorum. Diğer yerel ayarlarla da ilgili bir sorun var, ancak bunu Fransızca için hata ayıkladım. Ben UI takvimden tarih seçerek am (01-Avr-2016 gibi bir şey, biçimi "gg-AAA-yyyy" demek) ve benim koduna bu geçerken:Fransız yerel ayarı için ParseException ile birlikte SImpleDateFormat

String dateval = "01-Avr-2016"; 
Locale lformat = Locale.getDefault(); 
DateFormat specifiedDateFormat = new SimpleDateFormat("dd-MMM-yyyy", lformat); 
specifiedDateFormat.parse(dateval); 

Yukarıdaki kod hatası atıyor. SimpleDateFormat'taki kısa ayların dönemin (".") Ile birlikte geldiğini (yukarıdaki örnekte "avr" olur) buldum ve dönemi idare etmek için bir mantık yazabilirim ancak Fransızca için özel bir mantık yazmak istemiyorum. yerel ayar. Bunun yerine takvimden (DateComponent gelen) ayın neden "Avr" yerine "Avr" olarak seçildiğini bilmek istiyorum? Bu kullanım durumunu nasıl ele alabilirim?

+0

Lütfen sorunuzun takvimi/DateComponent bölümüne bir kod ekleyin. O parçayı görmeden neler olduğunu söylemek zor. Gerisi aşağıda cevaplandı. – chsbellboy

+0

aşağı oy kabul Basit bir DateComponent kodum var. korumalı DateComponent m_valueDateButton; Dize dateString = m_valueDateButton.getDateViewModel(). GetDateString(); Emin değilim, neden Fransızca Tarihiyle birlikte gelmiyor? – Jaydeep

cevap

2

İlk olarak, hata, parse() yönteminin bir ParseException oluşturduğu gerçeğinden kaynaklanır. Bunu halletmelisin. İkincisi, Fransız lokasyonunda kısaltılmış ayların kısaltmayı takip eden bir periyotla verilmesi beklenir. Dönemin eklenmesini başarabilirseniz, herhangi bir sorun yaşamamalısınız. Hem "01-avr.-2016" hem de "01-Avr.-2016" tarihleri ​​ayrılabilir tarihleri ​​geçerlidir.

siz "avr" veya "AVR" şöyle doğrudan Joda Time kullanmak işlemek istediğiniz durumda İçin Parsing French Dates in Java

String dateval = "01-avr.-2016"; 
Locale lformat = Locale.FRENCH; 
DateFormat specifiedDateFormat = new SimpleDateFormat("dd-MMM-yyyy", lformat); 
try{ 
specifiedDateFormat.parse(dateval); 
} 
catch(ParseException pe){ 
    pe.printStackTrace(); 
    //or whatever logic you want to do on an invalid entry 
} 

de ayrıştırma Fransız tarihleri ​​hakkında büyük bir ilgili soru var:

LocalDate frenchDate = DateTimeFormat.forPattern("dd-MMM-yyyy").withLocale(Locale.FRENCH).parseLocalDate("01-Avr-2016"); 
, bu şekilde kullanabilirsiniz Date Time Api yılında Java 8 yılında
1

,

// french date formatting (1. avril 2014) 
String frenchDate = dateTime.format(DateTimeFormatter.ofPattern("d. MMMM yyyy", new Locale("fr"))); 
01 Daha fazla bilgi için

:

  1. http://www.mscharhag.com/java/java-8-date-time-api

Aşağıdaki tabloda tarihleri ​​French locales:

Sample Date Formats of French is given below

Style French Locale 

DEFAULT 30 juin 2009 

SHORT 30/06/09 

MEDIUM 30 juin 2009 

LONG 30 juin 2009 

FULL mardi 30 juin 2009 

Update ile her stil için biçimlendirilir gösterir:

SimpleDateFormat ile kendi desenlerinizi oluşturmak yerine DateFormat.getDateInstance(int style, Locale locale)'u kullanın.

İlgili konular