如何确定Java中的区域设置是使用12小时还是24小时?

如何确定Java中的区域设置是使用12小时还是24小时?,java,time,locale,Java,Time,Locale,在Java中,我只想以小时和分钟为单位打印一天中的时间,并希望它根据区域设置在“13:00”和“1:00 PM”之间正确切换。如何执行此操作?使用该类创建给定时间的正确输出 从API开始: 要设置当前区域设置的日期格式,请使用静态factory方法之一: myString = DateFormat.getDateInstance().format(myDate); 您只需使用getTimeInstance()方法,并对返回的DateFormat对象调用format()方法,区域设置不会明确指定

在Java中,我只想以小时和分钟为单位打印一天中的时间,并希望它根据区域设置在“13:00”和“1:00 PM”之间正确切换。如何执行此操作?

使用该类创建给定时间的正确输出

从API开始:

要设置当前区域设置的日期格式,请使用静态factory方法之一:

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

您只需使用
getTimeInstance()
方法,并对返回的DateFormat对象调用
format()
方法,区域设置不会明确指定是首选12小时还是24小时时间格式。相反,特定于语言环境的日期格式由直接定义格式的语言环境处理

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

  • 如果您手中有一个
    SimpleDataFormat
    实例,您可以(如果您准备进行大量编码)调用并解析结果模式,查看它是否使用了12小时或24小时的日期。。。或者两者都没有。您甚至可以调整模式以使用“其他”表单,然后调用以更改格式


我编写了一个小函数,用于检测当前区域设置是使用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;
    }
}

非常感谢你!因为我真的只想打印它
DateFormat.getTimeInstance(DateFormat.SHORT,someLocale)
帮我完成了这个任务。我当然不希望出现这样的情况,我需要知道使用的是什么时间格式:p.如果您有不同的默认区域设置,并且AM/PM标记不同,那么这将不起作用。