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

时间:2010-07-28 09:43:13

标签: java time locale

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

3 个答案:

答案 0 :(得分:5)

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

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

    < / LI>
  • 如果您手中有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;
    }
}