当前位置: 首页 > 面试题库 >

Calendar.getInstance(TimeZone.getTimeZone(“ UTC”))没有返回UTC时间

乜华翰
2023-03-14
问题内容

我真的对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

所以我尝试将默认的TimeZone更改为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())调用返回DategetTime()。正是它将Date转换为的字符串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());


 类似资料:
  • 问题内容: 我想以毫秒为单位获取当前UTC时间。我搜索了google,并得到了一些System.currentTimeMillis()确实返回UTC时间的答案。但事实并非如此。如果我执行以下操作: 这三个时间几乎都相同(由于通话,相差以毫秒为单位)。 这不是UTC时间,而是我的时区时间。如何在Android中获取当前UTC时间? 问题答案: 您显示的所有三行都将给出自unix纪元以来的毫秒数,这是

  • 我想以毫秒为单位获取当前的UTC时间。我搜索了一下google,得到了System.currentTimeMillis()确实返回UTC时间的一些答案。但事实并非如此。如果我做了以下事情: 所有三个时间几乎相同(由于通话时间不同,时间相差毫秒)。 这个时间不是UTC时间,而是我的时区时间。如何在android中获取当前UTC时间?

  • 问题内容: 我只想检查是否返回UTC / GMT时间戳,还是需要使用? 问题答案: 返回UNIX时间戳,该时间戳与时区无关。由于UNIX时间戳表示自1970年 UTC 以来的秒数,您可以说它是UTC,但实际上没有时区。 实际上,UNIX时间戳在任何给定时间在全世界范围内都是相同的值。在撰写本文时,它在东京,伦敦和纽约。要将其转换为“人类可读”的时间,您需要指定要显示的时区。在东京是,在伦敦是在纽约

  • 我希望这两个实例是相等的。

  • UTC 方法 可根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。 语法: dateObject.UTC( year, month, day, hours, minutes, seconds, ms ); 参数说明: year -- 必需。表示年份的四位数字。 month -- 必需。表示月份的整数,介于 0 ~ 11。 day -- 必需。表示日期的整数,介于 1 ~ 31

  • UTC

    UTC代表协调世界时。 它是时间标准,并且在世界各地普遍使用。 所有时区都与UTC相比计算为偏移量。 例如,丹麦哥本哈根的时间是UTC + 1表示UTC时间加一小时。 它独立于Day light节省,应该用于在数据库中存储日期和时间。 转换时区 以下示例将展示各种时区的转换。 我们将以毫秒为单位打印一天中的小时和时间。 首先会有所不同,第二个将保持不变。 IOTester.java import