DateFormat 月份转大写

DateFormat month to uppercase

如何将日期格式化为以下视图 OCTOBER 21, 2018(大写月份)?我可以通过 "%1$TB %1$te, %1$tY" 模式获取它,但我需要通过 SimpleDateFormat 来获取它。你能建议我怎么做吗?

你可以这样做:

SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH);
String dateStr = sdf.format(new Date());
System.out.println( dateStr.toUpperCase() );

简要说明:

首先我们创建一个 SimpleDateFormat 的实例并将默认 "MMMM dd, yyyy" 作为参数传递,这将导致 "Month day, year".

然后我们将当前日期(new Date () 或您的日期)传递给 class SimpleDateFormat 以进行转换。

最后,我们使用toUpperCase()使文本大写。

希望对您有所帮助! :D

SimpleDateFormat 不能给你(尽管你可能会考虑是否可以开发一个可以的子class)。但是java.time,现代的Java日期和时间API,可以:

    Map<Long, String> monthNames = Arrays.stream(Month.values())
            .collect(Collectors.toMap(m -> Long.valueOf(m.getValue()), Month::toString));
    DateTimeFormatter dateFormatter = new DateTimeFormatterBuilder()
            .appendText(ChronoField.MONTH_OF_YEAR, monthNames)
            .appendPattern(" d, uuuu")
            .toFormatter();
    LocalDate date = LocalDate.of(2018, Month.OCTOBER, 21);
    String formattedDate = date.format(dateFormatter);
    System.out.println(formattedDate);

此代码段的输出是您所请求的:

OCTOBER 21, 2018

我假设您只需要英文版本。对于其他语言,您只需以不同方式填充地图。

这也一样,因为无论如何您都不应该使用 SimpleDateFormat。 class 不仅早已过时,而且还以麻烦着称。 java.time 通常更好用。

Link: Oracle tutorial: Date Time 解释如何使用 java.time.