0

GMT 変換が適用されたときに、時刻をデフォルトの時刻に戻そうとしています。

public static void main(String[] args) {

    // initial time is: 14:43
    Calendar cal = Calendar.getInstance();    
    cal.set(2013, 8, 1, 14, 43, 0);

    // configuring formatter to apply GMT rule.. now I would have: 18:43 (+4 hours shift)
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");        
    formatter.setTimeZone(TimeZone.getTimeZone("GMT"));

    // but then I want rest my GMT shift back to initial time format

    String startDate = formatter.format(new Date(cal.getTimeInMillis() + TimeZone.getDefault().getRawOffset()));

    System.out.println(startDate);
}

それは印刷します:2013/09/01 13:43:00

しかし、私は期待しています:2013/09/01 14:43:00

方法は何ですか?

4

2 に答える 2

1

夏時間に問題があります。タイムゾーンを日付/時刻と一緒に印刷すると、わかります。

于 2013-09-04T22:53:30.700 に答える
0

ああ..わかりました(ごめんなさい):

    int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);

    String startDate = formatter.format(new Date(cal.getTimeInMillis() + offset));
于 2013-09-04T22:53:29.400 に答える