0

私はそのような現在の時刻を取得しようとします:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
String sendingDateAndTime = dateFormat.format(cal.getTime()).trim();

しかし、システム時間が必要な場合はGMT時間を取得します(ソフトウェアが複数の国で実行されるため、TimeZoneオブジェクトを使用できるため、現地時間ではありません)。

日付ライブラリと GregorianCalendar ライブラリを使用する必要がありますが、同じ間違った結果が得られます。

多くの人が同じ問題を抱えていますが、私が見たすべての解決策は、タイムゾーンオブジェクトに「ヨーロッパ」などのハードコードを配置することです。

誰かがあなたを助けることができれば。

ありがとう

- - - - - - - - - - - - - - アップデート - - - - - - - - - - - ---------------

System.currentTimeMillis() を使用して、それをパラメーターとしてカレンダー オブジェクトに渡そうとしましたが、GMT 時間も取得します

4

1 に答える 1

0

これでGMT時間はどうなる?

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

そして、これはローカル コンピューターの時間ですか?

Calendar calendar = Calendar.getInstance();

DateFormat はデフォルトでローカル タイム ゾーンになります。Calendar オブジェクトの内部形式は、1970 年 1 月 1 日 GMT の午前 0 時を過ぎたミリ秒数です。

追加するために編集: このコードを実行すると、現地時間が取得されます。

public static void main (String[] args) {
    Calendar calendar = Calendar.getInstance();

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z");
    String sendingDateAndTime = dateFormat.format(calendar.getTime());
    System.out.println(sendingDateAndTime);
}

このコードを実行すると、タイム ゾーンはまだローカル タイム ゾーンですが、GMT が表示されます。

public static void main (String[] args) {
    Calendar calendar = Calendar.getInstance();
    TimeZone timeZone = calendar.getTimeZone();
    int offsetFromUTC = timeZone.getOffset(calendar.getTimeInMillis());
    calendar.add(Calendar.MILLISECOND, -offsetFromUTC);

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z");
    String sendingDateAndTime = dateFormat.format(calendar.getTime());
    System.out.println(sendingDateAndTime);
}
于 2013-08-28T12:55:37.180 に答える