回答:
できるよ:
timeStamp.toLocalDateTime().toLocalDate();
timestamp.toLocalDateTime()
はClock.systemDefaultZone()
タイムゾーンを使用して変換を行うことに注意してください。これは必要な場合とそうでない場合があります。
timestamp.toLocalDateTime()
ちなみに、このメソッドはsystemDefaultタイムゾーンを使用して変換を行います。これは必要な場合とそうでない場合があります。
LocalDateTime
常にシステムのデフォルトのタイムゾーンを使用します。それが「ローカル」という名前の意味です。
受け入れられた答えは理想的ではないので、2セントを追加することにしました
timeStamp.toLocalDateTime().toLocalDate();
は一般的に悪い解決策です。システムのタイムゾーンを使用して暗黙的な変換を行うと混乱を招くため、JDKにこのメソッドを追加した理由はわかりません。通常、java8日付クラスのみを使用する場合、プログラマーはタイムゾーンを指定することを強いられますが、これは良いことです。
良い解決策は
timestamp.toInstant().atZone(zoneId).toLocalDate()
ここで、zoneIdは使用するタイムゾーンです。これは、システムのタイムゾーンまたはZoneOffset.UTCなどのハードコードされたタイムゾーンを使用する場合、通常はZoneId.systemDefault()です。
一般的なアプローチは
@assyliasの回答を少し拡張して、タイムゾーンを考慮します。特定のタイムゾーンのLocalDateTimeを取得するには、少なくとも2つの方法があります。
アプリケーション全体にsetDefaultタイムゾーンを使用できます。タイムスタンプ-> java.time変換の前に呼び出す必要があります。
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
または、toInstant.atZoneチェーンを使用できます。
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();