提问人:kcon123 提问时间:5/25/2023 最后编辑:Anonymouskcon123 更新时间:5/25/2023 访问量:2080
如何将给定时区的 Java 日期转换为即时?[已结束]
How do I convert a Java Date into an Instant for a given timezone? [closed]
问:
我有一个 Date 类的实例和一个时区(例如欧洲/伦敦)。如何将其转换为即时?以下是正确的方法吗?
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of(timeZone));
Instant instant = zonedDateTime.toInstant();
答:
4赞
Basil Bourque
5/25/2023
#1
TL的;博士
myJavaUtilDate.toInstant()
不需要 , , 类。LocalDateTime
ZoneId
ZonedDateTime
详
你说:
我有一个 Date 类的实例
java.util.Date myJavaUtilDate = … ;
这个类现在是遗留的,几年前被 JSR 310 中定义的现代 java.time 类所取代。具体替换为 ,表示时间轴上的某个时刻、特定点,如 UTC 时间子午线的偏移量为 0 小时-分钟-秒。java.time.Instant
和时区(例如欧洲/伦敦)
ZoneId z = ZoneId.of( "Europe/London" ) ;
如何将其转换为即时?
无需时区。如上所述,两者都表示在 UTC 中看到的时刻。java.util.Date
java.time.Instant
新的👉转换方法被添加到旧类中。查找 & 的命名约定。您可以在旧类和新式类之间来回转换。坚持现代课程。仅使用旧版日期时间类与尚未更新到 java.time 的旧代码进行互操作。to…
from…
java.time.Instant instant = myJavaUtilDate.toInstant() ;
而另一个方向:
java.util.Date d = java.util.Date.from( instant ) ;
谨防另一个方向的数据丢失。An 的分辨率为纳秒,而分辨率为毫秒。Instant
java.util.Date
评论
Instant
Instant instant = date.toInstant()
LocalDateTime
ZonedDateTime.ofInstant(Instant, ZoneId)
date.toInstant()
ZoneOffset.UTC
String
Instant
Date.toInstant()
...就是这样。这是直截了当的,因为 a 只不过是表示纪元毫的值的包装器,纪元也是 的基数。java.util.Date
Instant
java.util.Date
LocalDateTime.ofInstant()
Instant
Date