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})", "--");
我有一个字符串“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})", "--");