22

UTC 時刻を表す Date オブジェクトがあります。メソッド getTime() を使用してこのオブジェクトの long 値を取得すると、返される値は現地時間 (米国中部) に対応します。元の UTC 時間に対応する値を取得する正しい方法は何ですか?

ありがとう

4

6 に答える 6

25

このDateFormatクラスには、希望するタイム ゾーンを設定するメソッドがあり、UTC 時刻を設定するタイム ゾーン クラスがあります。

たとえば、

SimpleDateFormat sdf = new SimpleDateFormat();
sdf.setTimeZone(new SimpleTimeZone(SimpleTimeZone.UTC_TIME, "UTC"));
Date yourUtcDate = sdf.parse(yourOriginalDate);
于 2010-03-08T17:14:15.297 に答える
24

java.util.Dateタイムゾーンの概念がありません。1970 年 1 月 1 日 00:00:00 UTC であるエポックに相対的な時間を保持するだけです。Date はビューとは別のモデルです。日付を表示すると、タイムゾーンの概念が適用されます。Date の toString() は、人間が読める日付をデフォルトのタイムゾーンで表示します。を使用DateFormatして異なるタイムゾーン (UTC など) で日付を表示するか、JVM のデフォルトのタイムゾーンを変更できます。

于 2010-03-08T21:13:20.550 に答える
8

getTime()「1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数」を返します (明らかに、正しく作成する必要があります)。GregorianCalendar(TimeZone)コンストラクターなどから始めて、好きなようにフォーマットできます。

于 2010-03-08T17:12:37.890 に答える
1

Date クラスの関数のほとんどは、現在 Calendar クラスに移行されているため、非推奨です。

Calendar から UTC 時刻を取得するコードを次に示します。

Date date = new Date(timeStamp);
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(date);

年、月などを取得するサンプルコードは次のとおりです。

System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));

Calendar は、TIME、DAY_OF_MONTH など、他の多くの有用な情報もサポートしています。これらすべてをリストしたドキュメントを次に示します。月は 0 ベースであることに注意してください。1 月は 0 番目の月です。

于 2018-02-21T06:04:54.263 に答える