【问题标题】:Detect AM/PM vs 24 hr clock preference from Java Locale information?从 Java 语言环境信息中检测 AM/PM 与 24 小时时钟偏好?
【发布时间】:2010-12-17 00:18:05
【问题描述】:

我正在寻找一种在 Java 程序中判断特定语言环境是否更喜欢以 12 小时 AM/PM 或 24 小时时钟显示时间的方法。现在,通常我只会使用 DateFormat 来正确格式化适合区域设置的日期。但是,我正在尝试本地化交通时间表的茎叶日历显示,这需要对区域设置偏好有一些直接的了解。您可以在此处查看时间表示例:

http://onebusaway.org/where/standard/schedule.action?id=1_538

关于如何以编程方式检测 12 小时 AM/PM 与 24 小时的任何想法?

【问题讨论】:

    标签: java localization internationalization


    【解决方案1】:

    你可以像这样探测它:

    boolean hasAmPmClock(Locale locale) {
            DateFormat stdFormat = DateFormat.getTimeInstance(DateFormat.SHORT,
                    Locale.US);
            DateFormat localeFormat = DateFormat.getTimeInstance(DateFormat.LONG,
                    locale);
            String midnight = "";
            try {
                midnight = localeFormat.format(stdFormat.parse("12:00 AM"));
            } catch (ParseException ignore) {
            }
            return midnight.contains("12");
    }
    

    【讨论】:

      【解决方案2】:

      我发现了另一种方式,它比公认的答案要少一些迂回:

      DateFormat format;
      // ...
      boolean is24Hour;
      if (format instanceof SimpleDateFormat) {
          SimpleDateFormat sdf = (SimpleDateFormat)format;
          String pattern = sdf.toPattern();
          is24Hour = !pattern.contains("a");
      }
      

      仍然很恶心,它不适用于其他 DateFormat 具体类型,但获取 DateFormat 对象的标准方法似乎返回 SimpleDateFormat

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 2018-01-21
        相关资源
        最近更新 更多