Java 时区 - IST 的奇怪行为?

我有以下代码:

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

Fri Jun 29 08:15:00 PDT 2012

PDT 不是比 IST(印度标准时间)晚 12.5 小时吗?任何其他时区都不会出现此问题 - 我在日期字符串中尝试了 UTC、PKT、MMT 等而不是 IST.Java中是否有两个IST?

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

a258543020 回答:Java 时区 - IST 的奇怪行为?

对不起,我必须为此写一个答案,但试试这个代码:

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 在列表中出现了好几次,第一个确实是以色列标准时间.

这篇关于Java 时区 - IST 的奇怪行为?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持前端之家!

本文链接:https://www.f2er.com/3175514.html

大家都在问