私はESTタイムゾーンで自分のコードを実行しています。Javaインスタント・トゥデー - 異なるタイムゾーンで
Instant.now()
をコードに使用すると、UTCで時刻が返されます。
しかし、私はインスタントので、私はESTでこれを実行している、以来
Date.from(Instant.now())
を使用して日付にこれを変換しようとしていない日としてDBからデータを取得するメソッドをテストしようとしています、このDate
を提供します私はESTで時間を過ごす。
実際のコード、
final Optional<Date> dbTime = dbService.getUpdatedTime();
final Instant lastInstant = dbTime.orElseGet(() -> Date.from(Instant.now())).toInstant();
テストコード、ここ
final Date dbTime = Date.from(Instant.now().minusSeconds(36000));
when(dbService.getUpdatedTime().thenReturn(Optional.of(dbTime));
は、dbTime
は、EST時間に変換されます。私はそれを設定することによってUTC時間を返すようにすることができますTimeZone.setDefault(TimeZone.getTimeZone("UTC"));
他にも良い方法がありますか?これは、メインアプリケーションクラスにTimeZone.setDefault(TimeZone.getTimeZone("UTC"));
を設定しても問題ありませんので、常にUTCとして扱われますか?
[タイムゾーン変換](https://stackoverflow.com/questions/6567923/timezone-conversion)の可能な複製 – pvg
「日付」にはタイムゾーンがありません。それはただの瞬間です。 https://codeblog.jonskeet.uk/2017/04/23/all-about-java-util-date/ –
を参照してください。@JonSkeetが正しいです。だからあなたは基本的に問題がない。あなたがそれを持っていたと信じさせたのは、単に 'Date.toString()'です。 –