小卓仔 2023-12-11 10:37 采纳率: 93.3%
浏览 7
已结题

关于UTC时间问题?

关于UTC时间问题?
比如我有个时间: "2022-01-01T12:00:00Z"; 我想将它解析成北京时间。

 String utcTime="2022-01-01T12:00:00Z";
 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
  df.setTimeZone(TimeZone.getTimeZone("UTC"));
 Date utcDate = dateFormat.parse(utcTime);   
System.out.println(utcDate);    //此时获得的 Date对象是北京时间:Sat Jan 01 20:00:00 CST 2022

我的疑问是:TimeZone.getTimeZone("UTC") //这个参数 UTC,怎么知道我是北京时区的?
如果我将参数改成:TimeZone.getTimeZone("Asia/Shanghai") 获得的Date对象结果跟 TimeZone.getTimeZone("UTC") 一样
想问的是:这个参数 UTC 它具体表达的是什么?会自动识别时区吗?

  • 写回答

2条回答 默认 最新

  • 小孟多 2023-12-11 11:00
    关注

    参数"UTC"代表协调世界时(Coordinated Universal Time),它是国际标准时间,通常用于跨时区的时间比较和转换。无论您所在的时区是哪里,使用"UTC"作为时区参数,会将时间解析为对应的协调世界时。

    在您的示例中,当您使用TimeZone.getTimeZone("UTC")时,您正在将时间解析为协调世界时,然后通过设置时区为"UTC",将其转换为北京时间。因为北京时间与协调世界时相差8小时,在打印时会显示为Sat Jan 01 20:00:00 CST 2022。

    而对于TimeZone.getTimeZone("Asia/Shanghai"),它表示亚洲/上海时区,也是北京时间所在的时区。因此,无论您选择使用"UTC"还是"Asia/Shanghai"作为时区参数,最终得到的Date对象都会是相同的,即北京时间。对于您的疑问,参数"UTC"表示协调世界时(Coordinated Universal Time),它是国际时间标准,不会自动识别时区,而是代表一个固定的时间标准。当您使用TimeZone.getTimeZone("UTC")时,您明确地告诉解析器将时间解析为协调世界时。

    如果您将参数改成TimeZone.getTimeZone("Asia/Shanghai"),同样会得到相同的结果,因为"Asia/Shanghai"表示亚洲/上海时区,而北京时间正好处于该时区内。这意味着无论您选择使用"UTC"还是"Asia/Shanghai"作为时区参数,最终得到的Date对象都会是相同的,即北京时间。

    因此,参数"UTC"不会自动识别时区,而是表示一个固定的国际时间标准,对于转换成特定时区的时间,需要通过额外的时区设置来实现。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错