更改区域设置时,不会更改DateFormat

时间:2012-07-09 05:08:00

标签: android localization

我正在使用此代码根据手机区域设置格式化日期

private String localisedDate(String date) {

    DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    try{
    Date d1 = df.parse(date);
    Locale myLocale = Locale.getDefault();
    DateFormat sdf = DateFormat.getDateInstance(DateFormat.SHORT, myLocale);
    StringBuffer sb = new StringBuffer();
    FieldPosition fp = new FieldPosition(DateFormat.YEAR_FIELD);
    sb = sdf.format(d1, sb, fp);
    sb.replace(sb.lastIndexOf("/") ,sb.length(), new SimpleDateFormat("/yyyy").format(d1) );
    Log.e("date",sb.toString());
    return sb.toString();
}catch (Exception e) {
    // TODO: handle exception
    return date;
}
}

此代码在模拟器和galaxy tab p1000(froyo)上显示完美行为 但是在htc和experia上,无论选择哪个区域设置都只显示单一格式

即。 DD / MM / YYYY 在智能手机上有什么我需要检查的区域设置吗? 请提供一些帮助。提前致谢

1 个答案:

答案 0 :(得分:1)

您可以查看this链接,也许您可​​以从这里获得一些想法。

代码

之后

calendar.setTime(date);

只需将calendar转换为字符串。