4

私はドキュメンテーションとグーグルによって見つけられた多くの時間関連の質問の間で迷子になりました。

私が欲しいのは非常に単純です。「[+/-][数値][数値][数値][数値]」形式(たとえば「+0100」)で実行中のタイムゾーンを表す文字列です。

私の現在のコードは次のとおりです。

    Calendar cal = Calendar.getInstance();
    TimeZone tz = cal.getTimeZone();
    String gmt = "" + tz.getID();

これは私の場所で「GMT」を返します。これはタイムゾーンの短いバージョン(3文字)であると思います。

4

4 に答える 4

7

これが私が実際に使用したコードです。誰かの役に立てば幸いです。

Date today = Calendar.getInstance().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("Z");
String gmt = sdf.format(today);
于 2012-05-18T17:00:01.940 に答える
3

次のことを試してみてください。

Calendar c = Calendar.getInstance();
        System.out.println("current: " + c.getTime());

        TimeZone z = c.getTimeZone();
        int offset = z.getRawOffset();
        if (z.inDaylightTime(new Date())) {
            offset = offset + z.getDSTSavings();
        }
        int offsetHrs = offset / 1000 / 60 / 60;
        int offsetMins = offset / 1000 / 60 % 60;

        System.out.println("offset: " + offsetHrs);
        System.out.println("offset: " + offsetMins);

        c.add(Calendar.HOUR_OF_DAY, (-offsetHrs));
        c.add(Calendar.MINUTE, (-offsetMins));

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        System.out.println("GMT Time: " + sdf.format(c.getTime()) + " +"
                + offsetHrs + ":" + offsetMins);

出力

current: Wed May 16 22:32:14 IST 2012
offset: 5
offset: 30
GMT Time: 2012-05-16 17:02:14 +5:30
于 2012-05-16T17:02:44.827 に答える
1

SimpleDateFormat で「Z」または「X」が必要なようです

Z タイムゾーン RFC 822 タイムゾーン -0800
X タイム ゾーン ISO 8601 タイム ゾーン -08; -0800; -08:00
于 2012-05-16T17:00:02.783 に答える