Android DateFormat的行为不可预测

Android DateFormat的行为不可预测,android,locale,time-format,Android,Locale,Time Format,在我的应用程序的UI中,我将时间戳格式化如下: DateFormat format = DateFormat.getTimeInstance(DateFormat.SHORT); updated.setText(format.format(message.getTimestamp())); (如果重要的是,每次需要格式化时间戳时,我都会获取实例。) 然而,行为有些不可预测:我有两台设备,一台运行安卓7.1.2,另一台运行安卓4.4.4。两者都有相同的设置:显示语言为英语(美国),键盘布局为立陶

在我的应用程序的UI中,我将时间戳格式化如下:

DateFormat format = DateFormat.getTimeInstance(DateFormat.SHORT);
updated.setText(format.format(message.getTimestamp()));
(如果重要的是,每次需要格式化时间戳时,我都会获取实例。)

然而,行为有些不可预测:我有两台设备,一台运行安卓7.1.2,另一台运行安卓4.4.4。两者都有相同的设置:显示语言为英语(美国),键盘布局为立陶宛语,时间格式为24小时

在7.1.2设备上,时间戳通常按预期显示(例如
19:42
)。但是,它们偶尔显示为
7:42 pm
。当这种情况发生时,它在所有时间戳上都是一致的,也就是说,我从来没有混合过格式。此外,当设备刚刚启动时,也会出现这种情况

4.4.4设备始终显示错误的时间格式,即
7:42 pm


我怎样才能有时间以用户在Android系统设置中选择的相同格式持续显示?

令人讨厌。在这两种情况下,
Locale.getDefault(Locale.Category.FORMAT)
返回什么
DateFormat.getTimeInstance(int)
使用此选项。按照我的阅读方式,
getTimeInstance()
不应遵守手机上的24小时设置。但是,如果默认区域设置意味着时间格式为24小时制,则应遵守此规定。烦人。在这两种情况下,
Locale.getDefault(Locale.Category.FORMAT)
返回什么
DateFormat.getTimeInstance(int)
使用此选项。按照我的阅读方式,
getTimeInstance()
不应遵守手机上的24小时设置。但是,如果默认区域设置意味着时间格式为24小时制,则应遵守这一点。