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中文网其他相关文章!