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

标签 java android android-studio date-formatting

在 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, "-");

最佳答案

您可以而且应该使用 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")));
}

这段代码的输出是

29-03-2019

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

参见 How to use ThreeTenABP… .

关于java - 如何移动字符串中的字符位置以实现日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58836334/

相关文章:

android - URI未在资源文件中注册

android - Android Studio 可以将 ant 构建脚本转换为 gradle 构建脚本吗?

java - 在 Java 中创建时间戳的正确方法是什么?

java - @Inject 可以在 pojo 中使用吗

java - 在不同项目中使用包含变量的文件

android - 设备在Android中连接到WiFi时如何获取蜂窝网络的IP地址

java - 有没有办法通过Vsphere SDK with Java获取Vmware ESX中每个vmware的驱动信息?

Java happens-before 关系

android - 关于Android M新的自动备份功能的问题

android - 如何在 Android Studio 3+ 上更改项目名称