首页 >Java >java教程 >为什么 SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') 显示 IST 而不是 UTC,如何修复它?

为什么 SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') 显示 IST 而不是 UTC,如何修复它?

Susan Sarandon
Susan Sarandon原创
2024-12-13 20:03:13443浏览

Why Does SimpleDateFormat(

SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'") 问题:显示 IST 时区

在 Java 中,SimpleDateFormat 类允许您根据预定义的模式格式化和解析日期。当使用模式“yyyy-MM-dd'T'HH:mm:ss'Z'”时,它应该表示 UTC 时区的日期和时间。但是,解析此类字符串时会出现问题。

请考虑以下代码:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
Date date = sdf.parse("2013-09-29T18:46:19Z");
System.out.println(date);

预期输出将是 UTC 时区的日期和时间。然而,许多用户报告说,它显示的是 IST(印度标准时间)时区的日期和时间。这会导致混乱和不正确的日期处理。

解决方案:显式设置时区

出现此问题的原因是 SimpleDateFormat 构造函数仅初始化日期模式,但没有设置明确时区。要纠正此问题,您需要手动将时区设置为 UTC。具体操作方法如下:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
Date date = sdf.parse("2013-09-29T18:46:19Z");
System.out.println(date);

通过将时区设置为 GMT,SimpleDateFormat 解析器将正确解释输入字符串并以预期的 UTC 时区显示日期和时间。

以上是为什么 SimpleDateFormat('yyyy-MM-dd'T'HH:mm:ss'Z'') 显示 IST 而不是 UTC,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn