我有第一代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版本)上表现不同?这令人担忧。
是否有办法始终获得相同的格式?解决方案是什么?
感谢。
答案 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。