如何确定区域设置是否使用AM/PM?

  发布于 2023-02-13 19:44

我有一个标签,只显示当天某小时的分钟部分.我想让它读取"PM"或"00",具体取决于时区.

我目前的解决方案只使用Joda's DateTimeFormat.shortTime().withLocale(myLocale)并从结果中取出最后2个字符.这有效,但感觉不对.

相反,我想检查给定的语言环境是否使用AM/PM表示法,但我还没有找到API调用来向我提供该信息.它是否存在,无论是在JodaTime还是Java库本身?例如,我想写一些类似的东西usesAmPm(myLocale)) ? DateTimeFormat.forPattern("a") : DateTimeFormat.forPattern("mm")

2 个回答
  • 这与Meno的答案非常相似,但我不喜欢这种instanceof用法(我想是某种形式的强迫症).这是我的版本:

    public static boolean usesAmPm(Locale locale)
    {
        String pattern = DateTimeFormatterBuilder.getLocalizedDateTimePattern(
            FormatStyle.MEDIUM, FormatStyle.MEDIUM, IsoChronology.INSTANCE, locale);
        return pattern.contains("a");
    }
    

    2023-02-13 19:46 回答
  • 回答如何检查给定语言环境是否使用AM/PM表示法的问题:

    关于此类本地化数据的唯一常见来源是来自Unicode联盟的CLDR.间接地,JDK加载一小部分CLDR,可以按如下方式访问:

    public static boolean usesAmPm(Locale locale) {
      DateFormat df = DateFormat.getTimeInstance(DateFormat.FULL, locale);
      if (df instanceof SimpleDateFormat) {
        return ((SimpleDateFormat) df).toPattern().contains("a");
      } else {
        return false; // unlikely to happen
      }
    }
    

    2023-02-13 19:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有