gpt4 book ai didi

Java 日历时区

转载 作者:行者123 更新时间:2023-11-29 08:21:22 24 4
gpt4 key购买 nike

我正在尝试将时间戳(毫秒)转换为另一个时区(GMT-7:00 美国/洛杉矶),但转换后得到的时间不是我期望的。有人可以向我解释为什么会发生这种情况以及我该如何正确地做到这一点?我的本地时区是“GMT+5:30”

long timeMillis = 1567697400000l; // Thu 5 September 2019 21:00:00

TimeZone laTimeZone = TimeZone.getTimeZone("GMT-07:00");

Calendar losAngelesTime = Calendar.getInstance(laTimeZone);
losAngelesTime.setTimeInMillis(timeMill);

// I expect the date to be Thu 5 September 2019 14:00:00,
// but I am getting Thu 5 September 2019 08:30:00

System.out.println(losAngelesTime.get(Calendar.HOUR_OF_DAY) + ":" + losAngelesTime.get(Calendar.MINUTE)+" "+ losAngelesTime.get(Calendar.DAY_OF_WEEK));

最佳答案

您提供的以毫秒为单位的时间是格林威治标准时间 2019 年 9 月 5 日星期四 21:00:00 + 5:30,实际上是 UTC 时间 2019 年 9 月 5 日星期四 15:30:00。现在您只需将这个时间转换为洛杉矶时区。这为您提供了格林威治标准时间 7:00 的 2019 年 9 月 5 日星期四 08:30:00。

只要时间以毫秒表示,它实际上是从纪元算起的 UTC 毫秒时间。 documentation清楚地说明了这一点。

An instant in time can be represented by a millisecond value that is an offset from the Epoch, January 1, 1970 00:00:00.000 GMT (Gregorian).

关于Java 日历时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57831373/

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