Java 如何知道区域设置使用的是12小时还是24小时格式?
我想知道,从区域设置来看,我是否必须使用24或12格式 我发现:Java 如何知道区域设置使用的是12小时还是24小时格式?,java,android,date,hour,Java,Android,Date,Hour,我想知道,从区域设置来看,我是否必须使用24或12格式 我发现: if (android.text.format.DateFormat.is24HourFormat(getApplicationContext())) 但是这个根据系统而不是区域设置返回布尔值。这意味着,如果用户在应用程序中使用英语,但手机使用24小时格式,它将返回true 如何得到一个布尔值,告诉我使用的格式是否为24小时?我没有用乔达。提前谢谢 编辑似乎有些人认为这是重复的,我已经阅读了您作为重复标志来源提供的帖子。它只能用
if (android.text.format.DateFormat.is24HourFormat(getApplicationContext()))
但是这个根据系统而不是区域设置返回布尔值。这意味着,如果用户在应用程序中使用英语,但手机使用24小时格式,它将返回true
如何得到一个布尔值,告诉我使用的格式是否为24小时?我没有用乔达。提前谢谢
编辑似乎有些人认为这是重复的,我已经阅读了您作为重复标志来源提供的帖子。它只能用近似的解决方法或提供日期的方法来解决,大多数情况下是当前日期,即使它是相应的格式
你可以猜到,如果我想知道我是否应该根据现场情况使用12小时制,这意味着我不需要日期或任何我已经知道的东西,但是关于我必须使用的格式的确认。看看实际的android.text.format.DateFormat.is24HourFormat方法,您将看到它们是如何做到的:
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";
}
因此,您可以根据获取区域设置的方式对其进行调整。您不想以用户首选的格式显示时间,而不管位置如何吗?为什么不遵循用户的选择?选择不是我的,这也是一个很好的问题,因为我还没有看到任何明确的答案,比如说
java.text.DateFormat.getTimeInstance(int-style,Locale)
-那么,在Manu的链接中被接受的答案中列出的第二个选项可能是您所能做的最好的,尽管我不知道为什么您只需要知道使用哪种格式而不实际使用它。