加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java时区 – IST的奇怪行为?

发布时间:2020-12-15 05:20:28 所属栏目: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),则会打印出来 Fri Jun 29 08:15:00 PDT 2012
我有以下代码:

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),则会打印出来

Fri Jun 29 08:15:00 PDT 2012

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

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读