小编典典

Java时区-IST的异常行为?

java

我有以下代码:

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是否比IST(印度标准时间)晚12.5小时?对于任何其他时区都不会发生此问题-
我在日期字符串中尝试使用UTC,PKT,MMT等代替IST。Java中是否有两个IST?

PS:实际代码中的日期字符串来自外部来源,因此我不能使用GMT偏移量或任何其他时区格式。


阅读 293

收藏
2020-09-26

共1个答案

小编典典

抱歉,我必须为此写一个答案,但是尝试下面的代码:

public class Test {

    public static void main(String[] args) throws ParseException {
        DF df = new DF("M/d/yy h:mm a z");
        String [][] zs = df.getDateFormatSymbols().getZoneStrings();
        for( String [] z : zs ) {
            System.out.println( Arrays.toString( z ) );
        }
    }

    private static class DF extends SimpleDateFormat {
        @Override
        public DateFormatSymbols getDateFormatSymbols() {
            return super.getDateFormatSymbols();
        }

        public DF(String pattern) {
            super(pattern);
        }
    }

}

您会发现IST在列表中出现了几次,而第一个确实是以色列标准时间。

2020-09-26