如何确定区域设置在Java中使用12或24小时的时间?

在Java中,我想以小时和分钟打印一天中的时间,并希望它根据语言环境在例如“13:00”和“1:00 PM”之间正确切换。 我该怎么做呢?

区域设置未明确指定是首选12或24小时时间格式。 相反,特定于语言环境的日期格式由直接定义格式的语言环境处理。

  • 如果您只是想使用“locale preferred”时间格式,只需调用三个DateFormat.getTimeInstance(...)静态方法中的一个,并使用它返回的任何DateFormat

  • 如果您手中有SimpleDateFormat实例,则可以(如果您准备进行大量编码)调用toPattern()并解析生成的模式以查看它是否使用了12或24小时日期…或者两者都没有。 您甚至可以调整模式以使用“其他”forms,然后调用applyPattern(String)来更改格式。

使用java.text.DateFormat类创建给定时间的正确输出。

从API开始:

要格式化当前Locale的日期,请使用以下静态工厂方法之一:

 myString = DateFormat.getDateInstance().format(myDate); 

您只需使用getTimeInstance()方法并在返回的DateFormat对象上调用format()方法

我写了一个小函数来检测当前语言环境是使用24小时还是12小时:

 public static boolean is24HourLocale() { String output = SimpleDateFormat.getTimeInstance(DateFormat.SHORT).format(new Date()); if (output.contains(" AM") || output.contains(" PM")) { return false; } else { return true; } }