String Append in Java 从不带“-”的日期到带“-”的日期

String Append in Java from Date without "-" to date with "-"

我有一个字符串“20180101”,需要在“2018”、“01”和“01”之后附加“-”,使其看起来像“2018-01-01”。 Java 有没有标准的方法来做到这一点?

LocalDate.parse(
    "20180101", 
    DateTimeFormatter.BASIC_ISO_DATE
)
.toString()

2018-01-01

详情

那个字符串看起来像一个日期。我建议你把它解析成 LocalDate

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

默认情况下,class 会以您想要的格式生成 String,即标准 ISO 8601 格式。

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

2018-01-01

以上在性能上有点昂贵,所以这里有一个直接的方法 StringBuilder:

StringBuilder sb = new StringBuilder("20180101");
sb.insert(6, "-");
sb.insert(4, "-");
System.out.println(sb);

因为结果是一个字符串,所以我建议使用 replaceAll,例如使用正则表达式:

String date = "20180101";
date = date.replaceAll("(....)(..)(..)", "--");

或者

date = date.replaceAll("(\d{4})(\d{2})(\d{2})", "--");