本文介绍了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),则打印

Assuming I now set my PC's timezone to Pacific Time (UTC-7 for PDT), this prints

PDT不比IST(印度标准时间)落后12.5小时?任何其他时区都不会出现此问题 - 我在日期字符串中尝试使用UTC,PKT,MMT等代替IST。 Java中是否有两个IST?

Isn't PDT 12.5 hours behind IST (Indian Standard Time)? This problem does not occur for any other timezone - I tried UTC, PKT, MMT etc instead of IST in the date string. Are there two ISTs in Java by any chance?

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

P.S: The date string in the actual code comes from an external source, so I cannot use GMT offset or any other timezone format.

推荐答案

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

Sorry, I have to write an answer for this, but try this code:

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

You'll find that IST appears several times in the list and the first one is indeed Israel Standard Time.

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

09-20 22:47