如何在字符串中移动字符位置以实现日期格式?

Adr*_*895 1 java android date-formatting android-studio

在Java(Android Studio)中,我有一个从数据库(Firebase)中获取的字符串,20190329它是一个日期,但我想以以下格式将其打印出来:29-03-2019。因此,我只需要移至2019字符串的末尾并29开始。我知道这可以通过使用循环来完成,但是有没有更简单的方法来实现呢?

我已经有添加了的代码,-并且效果很好:

StringBuilder sb = new StringBuilder(date); //the variable 'date' contains 20190329 or any other date from the database.
sb.insert(2, "-");
sb.insert(5, "-");
sb.insert(8, "-");
Run Code Online (Sandbox Code Playgroud)

deH*_*aar 6

您可以并且应该使用java.time为了解析和格式化日期对象:

public static void main(String[] args) {
    // use a LocalDate and a DateTimeFormatter with a fitting format to parse the String
    LocalDate date = LocalDate.parse("20190329", DateTimeFormatter.ofPattern("yyyyMMdd"));
    // print it (or return it as String) using a different format
    System.out.println(date.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")));
}
Run Code Online (Sandbox Code Playgroud)

此代码的输出是

public static void main(String[] args) {
    // use a LocalDate and a DateTimeFormatter with a fitting format to parse the String
    LocalDate date = LocalDate.parse("20190329", DateTimeFormatter.ofPattern("yyyyMMdd"));
    // print it (or return it as String) using a different format
    System.out.println(date.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")));
}
Run Code Online (Sandbox Code Playgroud)

java.timeThreeTen-Backport项目中,大多数功能都向后移植到Java 6和Java 7 。
ThreeTenABP中进一步适用于早期的Android(<API级别26)。

请参阅如何使用ThreeTenABP…