SimpleDateFormat在不同的平板电脑上表现不同

时间:2014-01-09 16:22:21

标签: android simpledateformat

我有第一代Asus Fonepad(android 4.1.2)和第二代Asus Fonepad(android 4.3)。

我使用以下代码在我的应用中将日期解析为所需的格式:

SimpleDateFormat df = new SimpleDateFormat("MMM dd HH:mm:ss yyyy", /*new Locale("nl", "NL")*/Locale.GERMANY);
        df.setTimeZone(TimeZone.getTimeZone(/*"Europe/Amsterdam"*/"Europe/Berlin"));
        String time = df.format(new Date());

上面的代码导致第一代fonepad上的“Dez 23 17:09:25 2013”​​和第二代fonepad上的“Dez.23 17:09:25 2013”​​。

如您所见,第二代在月之后添加了一个点。

这会导致服务器端出现parsexception。

为什么SimpleDateFormat在不同的设备(Android版本)上表现不同?这令人担忧。

是否有办法始终获得相同的格式?解决方案是什么?

感谢。

1 个答案:

答案 0 :(得分:2)

SimpleDateFormat(以及其他一些框架类)使用icu4c库来格式化内容。 DE的月份格式在此库的49.2和50.1版本之间更改。 不,你不能指望所有Android版本都有相同的行为。

链接到来源:https://android.googlesource.com/platform/external/icu4c/+/android-4.4.2_r1/data/locales/de.txt

添加:如果您向服务器发送数据而不是解决方案只使用数字:12月12将始终为12。