gpt4 book ai didi

java - Calendar.getInstance(TimeZone.getTimeZone ("UTC")) 未返回 UTC 时间

转载 作者:IT老高 更新时间:2023-10-28 11:35:00 25 4
gpt4 key购买 nike

我真的对使用 Calendar.getInstance(TimeZone.getTimeZone("UTC")) 方法调用得到的结果感到困惑,它正在返回 IST 时间。

这是我使用的代码

Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());

我得到的回应是:

Sat Jan 25 15:44:18 IST 2014

所以我尝试将默认时区更改为 UTC,然后我检查,然后它工作正常

Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());

TimeZone tz = TimeZone.getDefault() ;
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Calendar cal_Three = Calendar.getInstance();
System.out.println(cal_Three.getTime());
TimeZone.setDefault(tz);

结果:

Sat Jan 25 16:09:11 IST 2014
Sat Jan 25 10:39:11 UTC 2014

我错过了什么吗?

最佳答案

System.out.println(cal_Two.getTime()) 调用从 getTime() 中返回一个 DateDate 被转换为 println 的字符串,在您的情况下,该转换将使用默认的 IST 时区。

您需要明确使用 DateFormat.setTimeZone() 来打印所需时区的 Date

编辑:感谢@Laurynas,考虑一下:

TimeZone timeZone = TimeZone.getTimeZone("UTC");
Calendar calendar = Calendar.getInstance(timeZone);
SimpleDateFormat simpleDateFormat =
new SimpleDateFormat("EE MMM dd HH:mm:ss zzz yyyy", Locale.US);
simpleDateFormat.setTimeZone(timeZone);

System.out.println("Time zone: " + timeZone.getID());
System.out.println("default time zone: " + TimeZone.getDefault().getID());
System.out.println();

System.out.println("UTC: " + simpleDateFormat.format(calendar.getTime()));
System.out.println("Default: " + calendar.getTime());

关于java - Calendar.getInstance(TimeZone.getTimeZone ("UTC")) 未返回 UTC 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21349475/

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