【发布时间】:2017-12-01 11:14:39
【问题描述】:
SimpleDateFormat's getTimeZone().getID() 方法返回 Asia/Jerusalem 而不是 Asia/Kolkata 的日期格式为EEE MMM dd HH:mm:ss z yyyy。实际上,在我的开发机器中,它按预期返回了亚洲/加尔各答。但在其他一些机器(生产环境)中,它返回 Asia/Jerusalem 而不是 Asia/Kolkata。知道是什么原因造成的以及如何解决它。源码如下:
String input = "Mon Jun 12 13:29:47 IST 2017";
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
sdf.parse(input);
TimeZone timeZone = sdf.getTimeZone();
System.out.println(timeZone.getID());
【问题讨论】:
-
时区缩写,例如 IST、EST 等...不是唯一的。 IST 代表以色列标准时间和印度标准时间。您应该使用不同的方法来表示时间戳中的时区。
-
三个和四个字母的时区缩写是一个众所周知的问题。 IST 的第三种解释是爱尔兰标准时间(欧洲/都柏林)。
-
在哪里可以找到给定时区缩写的时区 ID 列表。例如,对于缩写 IST,时区 ID 为 Asia/Jerusalem、Asia/Kolkata、Europe/Dublin。
-
最好将最后一条评论发布为a separate question。让我们继续。
标签: java timezone simpledateformat date-format zoneddatetime