你能格式化一个西班牙语时间字符串(java)来强制am/pm在caps中吗?

yptwkmov  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(474)

在英语中,时间格式“h:mm a”表示“8:32 am”。在西班牙语中,时间格式“h:mm a”表示“8:32 a”。m、 “有没有一种简单的方法可以让西班牙语看起来像英语?你能在android/java中强制caps中的am/pm格式吗?

e0bqpujr

e0bqpujr1#

简单的解决方案:指定一个使用大写am和pm的区域设置。例如:

DateTimeFormatter formatter = DateTimeFormatter
            .ofLocalizedTime(FormatStyle.SHORT)
            .withLocale(Locale.US);

    LocalTime time = LocalTime.of(8, 32);

    String withUpperCaseAmPm = time.format(formatter);
    System.out.println(withUpperCaseAmPm);

输出为:
上午8:32
当然,我使用的是java.time,即现代的java日期和时间api。
硬解决方案:指定文本 AM 以及 PM 明确地。

Map<Long, String> amPmTexts = new HashMap<>();
    amPmTexts.put(0L, "AM");
    amPmTexts.put(1L, "PM");
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("h:mm ")
            .appendText(ChronoField.AMPM_OF_DAY, amPmTexts)
            .toFormatter();

使用此格式化程序时,输出与以前相同。

问:java.time不需要androidapi级别26吗?

java.time在较旧和较新的android设备上都能很好地工作。它至少需要Java6。
在Java8和更高版本以及更新的android设备上(api级别26),现代api是内置的。
在非android的java6和java7中获得了三个十的backport,即现代类的backport(三个十用于jsr310;请参见底部的链接)。
在旧的android上,要么使用desugaring,要么使用android版本的threeten backport。它叫3TENABP。在后一种情况下,请确保从导入日期和时间类 org.threeten.bp 有分装的。

链接

oracle教程:date time解释如何使用java.time。
java规范请求(jsr)310,其中 java.time 第一次被描述。
三十后港工程 java.time 到Java6和Java7(jsr-310为310)。
通过desugaring提供Java8+API
threetenabp,android版threeten backport
问:如何在android项目中使用threetenabp,有非常透彻的解释。

相关问题