问题描述
我需要在Java中将一些时间戳转换为OffsetDateTime
。例如,我有以下时间:
2020-07-31 13:15:00.000000000 -03:00
我应该使用SimpleDateFormat
来格式化此格式还是其他一些更简单的帮助程序?
解决方法
您需要使用DateTimeFormatter
(modern 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
的文档以获取更多详细信息。您还可以检查 Trail: Date Time ,以了解有关现代日期时间API的更多信息。
注意:java.util
日期时间类已过时且容易出错,其格式API SimpleDateFormat
也是如此。您应该完全停止使用它们。此外,OffsetDateTime
是现代日期时间API的一部分,SimpleDateFormat
不适合它。
如果您正在为自己的Android项目执行此操作,并且您的Android API级别仍不符合Java-8,请选中Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。