DateFormat:解析后丢失语言环境设置

时间:2013-09-13 17:49:58

标签: java text formatting date-format

我发现在使用DateFormat解析日期时,我丢失了特定于语言环境的设置。

 DateFormat date1 = DateFormat.getDateInstance(DateFormat.LONG,Locale.ITALY);// Long
    Date datE = date1.parse("13 settembre 2013", pp1);
    System.err.println("datE is: "+datE);

这是我未获得本地化的输出:date 34 is: Fri Sep 13 00:00:00 CEST 2013 有没有办法让它持久? (合乎逻辑地期望意大利格式的日期)

2 个答案:

答案 0 :(得分:1)

Date类具有内部日期格式。

public String toString() {
    // "EEE MMM dd HH:mm:ss zzz yyyy";
    BaseCalendar.Date date = normalize();
    StringBuilder sb = new StringBuilder(28);
    int index = date.getDayOfWeek();
    if (index == gcal.SUNDAY) {
        index = 8;
    }
    convertToAbbr(sb, wtb[index]).append(' ');                        // EEE
    convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
    CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd

    CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
    CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
    CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
    TimeZone zi = date.getZone();
    if (zi != null) {
        sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
    } else {
        sb.append("GMT");
    }
    sb.append(' ').append(date.getYear());  // yyyy
    return sb.toString();
}

您解析它的DateFormat不会影响它。

电话

System.err.println("datE is: "+datE);

执行字符串连接,它隐式调用引用类型上的toString(),即。 datE.toString()

答案 1 :(得分:0)

Date没有Locale。从纪元开始,它们只是一个长时间的包装。