如何在 Java 中将日期从 31-AUG-18 转换为 AUGUST31,2018

how to convert date from 31-AUG-18 to AUGUST31,2018 in Java

我正在以 2018 年 8 月 31 日的格式输入日期。我想使用 java

将其转换为 AUGUST31,2018

正在解析文本。

DateTimeFormatter inputFormatter = 
        new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern("dd-MMM-uuuu")
        .toFormatter(Locale.ENGLISH)
;

DateTimeFormatter outputformatter =
        DateTimeFormatter.ofPattern("MMMMdd,uuuu", Locale.ENGLISH)
;

String input = "31-AUG-2018";
LocalDate date = LocalDate.parse(input, inputFormatter);

正在生成文本。

String output = date.format(outputformatter).toUpperCase(Locale.ENGLISH);

System.out.println("Converted to: " + output);

此代码段输出:

Converted to: AUGUST31,2018

输入和输出中的全部大写需要一些特殊处理。对于输入,我使用 DateTimeFormatterBuilder 及其 parseCaseInsensitive 方法。这提供了一个格式化程序,它将解析大写或小写或它们的任何组合的月份缩写。对于输出,我认为没有比对结果调用 toUpperCase 更好的选择了。