您可以格式化西班牙语时间字符串(Java)以强制AM/PM使用caps吗?

您可以格式化西班牙语时间字符串(Java)以强制AM/PM使用caps吗?,java,android,datetime,time-format,Java,Android,Datetime,Time Format,在英语中,时间格式“h:MMA”表示“上午8:32”。在西班牙语中,时间格式“h:MMA”表示“上午8:32”。有没有一种简单的方法可以将西班牙语的格式设置为与英语相似?您能否在Android/Java中强制使用大写AM/PM格式?简易解决方案:指定使用大写AM和PM的区域设置。例如: DateTimeFormatter formatter = DateTimeFormatter .ofLocalizedTime(FormatStyle.SHORT)

在英语中,时间格式“h:MMA”表示“上午8:32”。在西班牙语中,时间格式“h:MMA”表示“上午8:32”。有没有一种简单的方法可以将西班牙语的格式设置为与英语相似?您能否在Android/Java中强制使用大写AM/PM格式?

简易解决方案:指定使用大写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();
Map-amPmTexts=newhashmap();
amPmTexts.put(0L,“AM”);
电流输出(1L,“PM”);
DateTimeFormatter formatter=新的DateTimeFormatterBuilder()
.附录模式(“h:mm”)
.appendText(ChronoField.AMPM_OF_DAY,amPmTexts)
.toFormatter();
使用此格式化程序时,输出与以前相同

问:java.time不需要Android API级别26吗? time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6

  • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
  • 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
  • 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从
    org.threeten.bp
    导入日期和时间类
链接
  • 解释如何使用java.time
  • ,其中首先描述了
    java.time
  • ,java.time的后端口到Java6和Java7(JSR-310为三十)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻

简易解决方案:指定使用大写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();
Map-amPmTexts=newhashmap();
amPmTexts.put(0L,“AM”);
电流输出(1L,“PM”);
DateTimeFormatter formatter=新的DateTimeFormatterBuilder()
.附录模式(“h:mm”)
.appendText(ChronoField.AMPM_OF_DAY,amPmTexts)
.toFormatter();
使用此格式化程序时,输出与以前相同

问:java.time不需要Android API级别26吗? time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6

  • 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
  • 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
  • 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从
    org.threeten.bp
    导入日期和时间类
链接
  • 解释如何使用java.time
  • ,其中首先描述了
    java.time
  • ,java.time的后端口到Java6和Java7(JSR-310为三十)
  • ,Android版Three Ten Backport
  • ,解释得非常透彻