UTC 時刻を表す Date オブジェクトがあります。メソッド getTime() を使用してこのオブジェクトの long 値を取得すると、返される値は現地時間 (米国中部) に対応します。元の UTC 時間に対応する値を取得する正しい方法は何ですか?
ありがとう
このDateFormat
クラスには、希望するタイム ゾーンを設定するメソッドがあり、UTC 時刻を設定するタイム ゾーン クラスがあります。
たとえば、
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.setTimeZone(new SimpleTimeZone(SimpleTimeZone.UTC_TIME, "UTC"));
Date yourUtcDate = sdf.parse(yourOriginalDate);
java.util.Date
タイムゾーンの概念がありません。1970 年 1 月 1 日 00:00:00 UTC であるエポックに相対的な時間を保持するだけです。Date はビューとは別のモデルです。日付を表示すると、タイムゾーンの概念が適用されます。Date の toString() は、人間が読める日付をデフォルトのタイムゾーンで表示します。を使用DateFormat
して異なるタイムゾーン (UTC など) で日付を表示するか、JVM のデフォルトのタイムゾーンを変更できます。
getTime()
「1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数」を返します (明らかに、正しく作成する必要があります)。GregorianCalendar(TimeZone)
コンストラクターなどから始めて、好きなようにフォーマットできます。
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 番目の月です。