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