如何在Java中将日期从31-AUG-18转换为2018年8月31日

时间:2018-10-24 15:37:40

标签: java date-formatting date-parsing java-date

我正在以31-AUG-2018的格式获取日期作为输入。我想使用Java将其转换为2018年8月31日

1 个答案:

答案 0 :(得分:1)

解析文本。

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);

此代码段输出:

  

转换为:2018年8月31日

输入和输出中的所有大写字母都需要特殊处理。对于输入,我使用的是DateTimeFormatterBuilder及其parseCaseInsensitive方法。这提供了一个格式化程序,它将以大写或小写或它们的任意组合来解析月份的缩写。对于输出,没有比在结果上调用toUpperCase更好的选择了。