我试图知道,从Locale,我是否必须使用24或12格式。
我发现了这个:
if (android.text.format.DateFormat.is24HourFormat(getApplicationContext()))
但是这个根据系统返回一个布尔值,而不是Locale 。这意味着如果用户为应用程序使用英语但使用24小时格式的手机,它将返回true ...
如何获得一个布尔值告诉我使用的格式是否是24小时?我没有使用Joda。提前谢谢。
编辑因为似乎有些人认为这是重复的,我已经阅读了您提供的帖子作为重复标记的来源。它只能通过近似的变通方法或提供日期的方法来解决,大部分时间是当前的,即使它是相应的格式。
你可以猜到,如果我想要一种方法来了解我是否应该根据Locale使用12小时格式,这意味着我不需要日期或任何东西,我已经拥有,但确认我必须使用的格式。
答案 0 :(得分:3)
看看实际的android.text.format.DateFormat.is24HourFormat方法的source code,你会看到他们是如何做到的:
Locale locale = context.getResources().getConfiguration().locale;
java.text.DateFormat natural =
java.text.DateFormat.getTimeInstance(
java.text.DateFormat.LONG, locale);
if (natural instanceof SimpleDateFormat) {
SimpleDateFormat sdf = (SimpleDateFormat) natural;
String pattern = sdf.toPattern();
if (pattern.indexOf('H') >= 0) {
value = "24";
} else {
value = "12";
}
} else {
value = "12";
}
因此,您可以根据您获得语言环境的方式进行调整。