使用SimpleDateFormat(字符串,区域设置)分析法语区域设置时出错 [英] Parsing error for French locale with SimpleDateFormat(string,locale)

查看:0
本文介绍了使用SimpleDateFormat(字符串,区域设置)分析法语区域设置时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的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; 
         }
    }

如果我将区域设置值更改为US,则它在英语区域设置下工作正常。

但对于法语区域设置,它引发分析错误。

java.ext.ParseException:可升级日期"01:01 Matin"

为了更好地理解,我已将调试信息添加为注释行

推荐答案

感谢大家的回答。

如前所述,我无法更改代码库。

所以,我所做的是:

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值我从一个操作类传递到另一个类。如果它不是英语,它将进入If块之一,或者如果是英语,它将默认进入Else块。根据本地值,它从属性文件中获取AM/PM值并进行相应的转换。

我只是将AM/PM值从其他区域设置特定的语言修改为英语,因为SimpleDateFormat()仅支持英语。

你们可以称它为丑陋的黑客,但你猜怎么着,它解决了我的目的。

这篇关于使用SimpleDateFormat(字符串,区域设置)分析法语区域设置时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆