2

我有以下代码:

    public static void main(String[] args) {
       DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   //get current date time with Date()
       Date date = new Date();
       String currentDate = dateFormat.format(date);

       final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         try {
            System.out.println(sdf.format(getSomeDate(currentDate,TimeZone.getTimeZone("Asia/Omsk"))));
         } catch (ParseException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
       }  
    }

    public static Date getSomeDate(final String str, final TimeZone tz) throws ParseException {
       final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
       sdf.setTimeZone(tz);
       return sdf.parse(str);
    }

现在的问题是,如果我使用我想要的时区(即“美国/芝加哥”),我会得到完全错误的时间。它执行当前时间 +6 而不是 -6。

那么我该如何解决这个问题,因为现在我必须从 GMT + 6 开始设置一个时区才能为我的程序获取正确的时间和日期。

此外,Java 会自动合并 DST 设置吗?由于世界各地的人们都在使用它,因此有些人使用不同的 DST 时间,因此很难保持正确的时间。

4

2 回答 2

1
于 2020-02-04T06:02:39.447 回答
0

我想问题是您在 getSomeDate() 方法中只为 SimpleDateFormat 设置了一次 TimeZone。尝试对 SimpleDateFormat 的所有实例执行此操作。

于 2013-06-29T14:14:12.500 回答