0

我需要将一些时间戳转换为OffsetDateTimejava。例如,我有以下时间:

2020-07-31 13:15:00.000000000 -03:00

我应该用它SimpleDateFormat来格式化这个或其他一些更简单的助手吗?

4

1 回答 1

1

您需要使用DateTimeFormatter现代日期时间类的解析和格式化 API ),如下所示:

import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;

public class Main {
    public static void main(String[] args) {
        OffsetDateTime odt = OffsetDateTime.parse("2020-07-31 13:15:00.000000000 -03:00",
                DateTimeFormatter.ofPattern("u-M-d H:m:s.n ZZZZZ"));
        System.out.println(odt);
    }
}

输出:

2020-07-31T13:15-03:00

检查文档以DateTimeFormatter获取更多详细信息。您还可以查看Trail: Date Time以了解有关现代日期时间 API 的更多信息。

注意: java.util日期时间类已经过时且容易出错,它们的格式化 API 也是如此,SimpleDateFormat. 您应该完全停止使用它们。此外,OffsetDateTime它是现代日期时间 API 的一部分,SimpleDateFormat不适合它。

如果您正在为您的 Android 项目执行此操作,并且您的 Android API 级别仍然不符合 Java-8,请通过 desugaring和How to use ThreeTenABP in Android Project检查Java 8+ APIs available

于 2020-10-06T21:34:10.067 回答