在Java中,我想以小时和分钟打印一天中的时间,并希望它根据语言环境在例如“13:00”和“1:00 PM”之间正确切换。我该怎么做?
答案 0 :(得分:5)
区域设置未明确指定是首选12或24小时时间格式。相反,特定于语言环境的日期格式由直接定义格式的语言环境处理。
如果您只想使用“locale preferred”时间格式,只需调用三个DateFormat.getTimeInstance(...)
静态方法中的一个,并使用它返回的DateFormat
。
如果您手中有SimpleDateFormat
个实例,您可以(如果您准备进行大量编码)调用toPattern()
并解析生成的模式以查看是否存在使用了12或24小时的日期......或两者都没有。你甚至可以调整模式以使用“其他”形式,然后调用applyPattern(String)
来改变格式。
答案 1 :(得分:4)
使用java.text.DateFormat类创建给定时间的正确输出。
来自API:
要格式化当前区域设置的日期,请使用以下静态工厂方法之一:
myString = DateFormat.getDateInstance().format(myDate);
您只需使用getTimeInstance()
方法并在返回的DateFormat对象上调用format()
方法
答案 2 :(得分:1)
我编写了一个小函数来检测当前语言环境是使用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;
}
}