将 sql 时间戳转换为 java OffsetDateTime

Convert a sql timestamp to java OffsetDateTime

我需要在 java 中将一些时间戳转换为 OffsetDateTime。比如我有以下时间:

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

我应该使用 SimpleDateFormat 来格式化这个还是其他一些更直接的助手?

您需要使用DateTimeFormattermodern date-time classes的解析和格式化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 for more details on it. You can also check Trail: Date Time 的文档以了解有关现代 date-time API 的更多信息。

注意: java.util date-time 类 已过时,error-prone 格式也已过时 API , SimpleDateFormat。你应该完全停止使用它们。此外,OffsetDateTime 是现代 date-time API 的一部分,而 SimpleDateFormat 不适合它。

如果您正在为您的 Android 项目执行此操作,并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring and .