如何确定区域设置在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; } }