gpt4 book ai didi

java - 如何在 Java 中使用 DateTimeZone

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:17:59 26 4
gpt4 key购买 nike

我一直在尝试使用以下代码将服务器的日期和时间转换为用户的日期和时间

@Test
public void playingWithJodaTime() {

LocalDateTime localDateTime = new LocalDateTime();
System.out.println("server localDateTime : "
+ localDateTime.toDateTime(DateTimeZone.getDefault()).toDate());
System.out.println("user's localDateTime : "
+ localDateTime.toDateTime(DateTimeZone.forID("Asia/Jakarta"))
.toDate());
}

打印结果

server localDateTime : Tue Dec 17 00:04:29 SGT 2013
user's localDateTime : Tue Dec 17 01:04:29 SGT 2013

但是打印结果与我预期的不同,因为服务器时区是 (UTC+08:00) Kuala Lumpur, Singapore 而用户的是 (UTC+07:00 ) 曼谷、河内、 Jakarta

我做错了什么?

最佳答案

您正在转换 DateTime到 java Date (为什么?)
java.util.Date 使用默认的 JVM 时区
因此,您在此转换时错过了时区。

此示例按预期工作:

LocalDateTime localDateTime = new LocalDateTime();
System.out.println("server localDateTime : "
+ localDateTime.toDateTime(DateTimeZone.getDefault()));
System.out.println("user's localDateTime : "
+ localDateTime.toDateTime(DateTimeZone.forID("Asia/Jakarta")));

如果你想将 joda DateTime 转换成其他东西,那么将它转换成 Calendar

  LocalDateTime localDateTime = new LocalDateTime();
System.out.println("server localDateTime : "
+ localDateTime.toDateTime(DateTimeZone.getDefault()).toGregorianCalendar());
System.out.println("user's localDateTime : "
+ localDateTime.toDateTime(DateTimeZone.forID("Asia/Jakarta")).toGregorianCalendar());

关于java - 如何在 Java 中使用 DateTimeZone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20615288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com