字符串在日期中从Java添加到没有" - "到日期的" - "

Tou*_*eer 1 java date date-formatting

我有一个字符串"20180101",需要在"2018","01"和"01"之后追加" - ",所以它看起来像"2018-01-01".Java中有没有标准方法可以做到这一点?

Swe*_*per 8

LocalDate.parse(
    "20180101", 
    DateTimeFormatter.BASIC_ISO_DATE
)
.toString()
Run Code Online (Sandbox Code Playgroud)

2018年1月1日

细节

那个字符串看起来像个约会.我建议你把它解析成一个LocalDate.

您的输入字符串格式uuuuMMdd是标准ISO 8601的"基本"变体.java.time类已为该格式化模式预定义了一个对象DateTimeFormatter.BASIC_ISO_DATE.

String默认情况下,该类会以您所需的格式生成标准ISO 8601格式.

LocalDate localDate = LocalDate.parse("20180101", DateTimeFormatter.BASIC_ISO_DATE);
String output = localDate.toString();  // the default format is the format you want.
Run Code Online (Sandbox Code Playgroud)

2018年1月1日

上面的性能有点贵,所以这是一个简单的方法StringBuilder:

StringBuilder sb = new StringBuilder("20180101");
sb.insert(6, "-");
sb.insert(4, "-");
System.out.println(sb);
Run Code Online (Sandbox Code Playgroud)