【发布时间】:2012-07-01 03:46:03
【问题描述】:
我有以下代码:
DateFormat df = new SimpleDateFormat("M/d/yy h:mm a z");
df.setLenient(false);
System.out.println(df.parse("6/29/2012 5:15 PM IST"));
假设我现在将 PC 的时区设置为太平洋时间(PDT 为 UTC-7),这将打印出来
2012 年 6 月 29 日星期五 08:15:00 PDT
PDT 不是比 IST(印度标准时间)晚 12.5 小时吗?任何其他时区都不会出现此问题 - 我在日期字符串中尝试了 UTC、PKT、MMT 等而不是 IST。 Java中是否有两个IST?
P.S:实际代码中的日期字符串来自外部来源,所以我不能使用 GMT 偏移量或任何其他时区格式。
【问题讨论】:
-
据我所知,有几个 IST。从时差(9 小时)来看,您可能使用的是以色列标准时间。
-
@biziclop 我想到了这个。但是让我偏离了这一点的是以下内容:
System.out.println(TimeZone.getTimeZone("IST").getRawOffset());这将打印 19800000 或 5.5 小时,这表明它确实是印度标准时间。还是它选择了具有相同 ID“IST”的许多时区中的第一个?如果是这样,如果一个东西对很多东西都是一样的,那它怎么可能是一个“ID”呢? -
@esej 更可能是时区缩写不明确:en.wikipedia.org/wiki/List_of_time_zone_abbreviations
-
看source code好像IST是印度...
-
@Vasan 这不是一个真正的 ID,
SimpleDateFormat是一个奇怪的野兽,很可能它根本没有使用TimeZone.getTimeZone()。