【问题标题】:Detect AM/PM vs 24 hr clock preference from Java Locale information?从 Java 语言环境信息中检测 AM/PM 与 24 小时时钟偏好?
【发布时间】:2010-12-17 00:18:05
【问题描述】:
【问题讨论】:
标签:
java
localization
internationalization
【解决方案1】:
你可以像这样探测它:
boolean hasAmPmClock(Locale locale) {
DateFormat stdFormat = DateFormat.getTimeInstance(DateFormat.SHORT,
Locale.US);
DateFormat localeFormat = DateFormat.getTimeInstance(DateFormat.LONG,
locale);
String midnight = "";
try {
midnight = localeFormat.format(stdFormat.parse("12:00 AM"));
} catch (ParseException ignore) {
}
return midnight.contains("12");
}
【解决方案2】:
我发现了另一种方式,它比公认的答案要少一些迂回:
DateFormat format;
// ...
boolean is24Hour;
if (format instanceof SimpleDateFormat) {
SimpleDateFormat sdf = (SimpleDateFormat)format;
String pattern = sdf.toPattern();
is24Hour = !pattern.contains("a");
}
仍然很恶心,它不适用于其他 DateFormat 具体类型,但获取 DateFormat 对象的标准方法似乎返回 SimpleDateFormat。