SpringBoot我可以用Java实例化一个已经有时区的新日期吗?
我需要生成一个已经具有正确时区的new Date();
,因为我需要记录服务器上接收新数据的日期和时间。(我知道您可以使用SimpleDateFormat
,但它需要解析已经创建的字符串)。
我使用的是Java+springboot
你可以在下面搜索框中键入要查询的问题!
我需要生成一个已经具有正确时区的new Date();
,因为我需要记录服务器上接收新数据的日期和时间。(我知道您可以使用SimpleDateFormat
,但它需要解析已经创建的字符串)。
我使用的是Java+springboot
# 1 楼答案
爪哇。时间
java.util
日期时间API及其格式化APISimpleDateFormat
已经过时且容易出错。建议完全停止使用它们,并切换到modern Date-Time API*使用
java.time
的解决方案,现代日期时间API:您可以将ZonedDateTime
与适用的ZoneId
一起使用演示:
样本运行的输出:
ONLINE DEMO
从Trail: Date Time了解有关现代日期时间API的更多信息。检查this answer和this answer以了解如何在JDBC中使用
java.time
API关于
java.util.Date
:一个} 函数应用JVM的时区来返回一个
java.util.Date
对象只是表示时间轴上的一个瞬间——一个包装器,用于包装自UNIX纪元(1970年1月1日,00:00:00 GMT)以来的毫秒数。因为它不保存任何时区信息,所以它的^{String
格式的EEE MMM dd HH:mm:ss zzz yyyy
,它是从这个值派生出来的。要以不同的格式和时区获取java.util.Date
对象的String
表示,您需要将SimpleDateFormat
与所需的格式和适用的时区一起使用,例如*如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查Java 8+ APIs available through desugaring。请注意,Android 8.0 Oreo已经提供了support for ^{} 。
# 2 楼答案
使用日期格式。比如