java.util.Date
インスタンスがあることをご理解いただきありがとうございます。たとえば、Wed Nov 01 00:00:00 GMT 2017
として印刷されます。これは、そのtoString
メソッドが生成するものです。 Date
にタイムゾーンはありません。通常Date.toString()
はJVMのタイムゾーン設定を取得し、このタイムゾーンで日付をレンダリングします。だからあなたはGMTタイムゾーンを実行しているようですか? this popular blog entry: All about java.util.Dateで詳しく読むことができます。
可能であれば、Date
を避けてください。 The modern Java date and time API known as java.time
or JSR-310は、あなたのようなタイムゾーンの魔法のために、一般的にも、少なくとも、両方とも、とてもうまく動作します。次に、assylias’ answerを使用します。
この回答では、以前のAPIからDate
を取得したとします。変更できない(または今すぐ変更できない)可能性があります。私はあなたが望む変更のために最新のAPIをお勧めします。次のスニペットからの出力で、コード内にコメントとして示します。
System.out.println(oldFashionedDateObject); // Wed Nov 01 00:00:00 GMT 2017
// first thing, convert the Date to an instance of a modern class, Instant
Instant pointInTime = oldFashionedDateObject.toInstant();
// convert to same hour and minute in US/Mountain and then back into UTC
ZonedDateTime convertedDateTime = pointInTime.atOffset(ZoneOffset.UTC)
.atZoneSimilarLocal(ZoneId.of("US/Mountain"))
.withZoneSameInstant(ZoneOffset.UTC);
System.out.println(convertedDateTime); // 2017-11-01T06:00Z
// only assuming you absolutely and indispensably need an old-fashioned Date object back
oldFashionedDateObject = Date.from(convertedDateTime.toInstant());
System.out.println(oldFashionedDateObject); // Wed Nov 01 06:00:00 GMT 2017
私はWed Nov 01 06:00:00
を得ました。 Current Local Time in Denver, Colorado, USAによると、夏時間(DST)は今年11月5日に終了しました。
java.util.Dateまたはjava.time.LocalDateを使用していますか? – Al1
私はjava.util.Date –
@AdrianDanielCuleaを使用しています。申し訳ありませんが、私は抵抗できませんでした。真剣にも、現代のJavaの日時APIはとても使い勝手が良いので、変更することをお勧めします。 –