15
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
java.util.Date fromDate = cal.getTime();
System.out.println(fromDate);

上記のコードは、日付をGMTで印刷するのではなく、ローカルタイムゾーンで印刷します。現在の日付からGMT相当の日付を取得するにはどうすればよいですか(プログラムが日本またはSFOで実行できると仮定)

4

3 に答える 3

22

これはどう -

public static void main(String[] args) throws IOException {
    Test test=new Test();
    Date fromDate = Calendar.getInstance().getTime();
    System.out.println("UTC Time - "+fromDate);
    System.out.println("GMT Time - "+test.cvtToGmt(fromDate));
}
private  Date cvtToGmt( Date date ){
    TimeZone tz = TimeZone.getDefault();
    Date ret = new Date( date.getTime() - tz.getRawOffset() );

    // if we are now in DST, back off by the delta.  Note that we are checking the GMT date, this is the KEY.
    if ( tz.inDaylightTime( ret )){
        Date dstDate = new Date( ret.getTime() - tz.getDSTSavings() );

        // check to make sure we have not crossed back into standard time
        // this happens when we are on the cusp of DST (7pm the day before the change for PDT)
        if ( tz.inDaylightTime( dstDate )){
            ret = dstDate;
        }
     }
     return ret;
}

テスト結果
UTC時間-5月15日火曜日16:24:14 IST2012GMT
時間-5月15日火曜日10:54:14IST2012

于 2012-05-15T10:54:25.397 に答える
18
DateFormat gmtFormat = new SimpleDateFormat();
TimeZone gmtTime = TimeZone.getTimeZone("GMT");
gmtFormat.setTimeZone(gmtTime);
System.out.println("Current DateTime in GMT : " + gmtFormat.format(new Date()));

より一般的には、この方法で任意の(有効な)タイムゾーンに変換できます


見る

于 2012-05-15T10:50:16.143 に答える
2

このようにSimpleDateFormat dateFormatGmt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss"); dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT"));

于 2012-05-15T10:55:33.447 に答える