本文介紹了使用SimpleDateFormat(字符串,區(qū)域設(shè)置)分析法語(yǔ)區(qū)域設(shè)置時(shí)出錯(cuò)的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我的Java端有一段這樣的代碼:
private static DateFormat getHourFormatter(){
//DateFormatSymbols dateFormatSymbols = new DateFormatSymbols(_locale);
Locale locale = Locale.FRENCH; //locale : "fr"
DateFormat hourFormatter = new SimpleDateFormat( "hh:mm a",locale); //hourFormatter: simpleDateFormat@103068 locale: "fr"
hourFormatter.setTimeZone( TimeZone.getTimeZone("GMT") );
return hourFormatter; //hourFormatter: SimpleDateFormat@103068
}
protected static boolean isHoursTimeStringValid( String hourDisplay ) {
try {
getHourFormatter().parse( hourDisplay ); //hourDisplay: "01:01 Matin"
return true;
} catch (ParseException e) { //e: "java.text.ParseException: Upparseable date "01:01 Matin"
return false;
}
}
如果我將區(qū)域設(shè)置值更改為US,則它在英語(yǔ)區(qū)域設(shè)置下工作正常。
但對(duì)于法語(yǔ)區(qū)域設(shè)置,它引發(fā)分析錯(cuò)誤。
java.ext.ParseException:可升級(jí)日期”01:01 Matin”
為了更好地理解,我已將調(diào)試信息添加為注釋行
推薦答案
感謝大家的回答。
如前所述,我無(wú)法更改代碼庫(kù)。
所以,我所做的是:
public void setBeginAMPM( String ampm ) {
if(ampm.equals(new I18NStringFactory().getString("Calendar", _locale , "default.time.am" ))) {
_beginAMPM = "AM";
}
else if(ampm.equals(new I18NStringFactory().getString("Calendar", _locale , "default.time.pm" ))) {
_beginAMPM = "PM";
}
else{
_beginAMPM = ampm;
}
}
public void setEndAMPM( String ampm ) {
if(ampm.equals(new I18NStringFactory().getString("Calendar", _locale , "default.time.am" ))) {
_endAMPM = "AM";
}
else if(ampm.equals(new I18NStringFactory().getString("Calendar", _locale , "default.time.pm" ))) {
_endAMPM = "PM";
}
else{
_endAMPM = ampm;
}
}
_LOCALE值我從一個(gè)操作類(lèi)傳遞到另一個(gè)類(lèi)。如果它不是英語(yǔ),它將進(jìn)入If塊之一,或者如果是英語(yǔ),它將默認(rèn)進(jìn)入Else塊。根據(jù)本地值,它從屬性文件中獲取AM/PM值并進(jìn)行相應(yīng)的轉(zhuǎn)換。
我只是將AM/PM值從其他區(qū)域設(shè)置特定的語(yǔ)言修改為英語(yǔ),因?yàn)?strong>SimpleDateFormat()僅支持英語(yǔ)。
你們可以稱(chēng)它為丑陋的黑客,但你猜怎么著,它解決了我的目的。
這篇關(guān)于使用SimpleDateFormat(字符串,區(qū)域設(shè)置)分析法語(yǔ)區(qū)域設(shè)置時(shí)出錯(cuò)的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,