「現在のミリ秒」が何を意味するのかは完全にはわかりませんが、「エポック」からのミリ秒数、つまりUTC 1970年1月1日の午前0時であると想定します。
現在のエポックからのミリ秒数を知りたい場合はSystem.currentTimeMillis()
、Anubian Noobが指摘したように使用してください。その場合、新しいjava.time APIのいずれかを使用してこれを行う理由はありません。
ただし、多分すでにLocalDateTime
どこかからまたは類似のオブジェクトがあり、それをエポックからミリ秒に変換したい場合があります。LocalDateTime
オブジェクトのファミリには現在のタイムゾーンの概念がないため、これを直接実行することはできません。したがって、タイムゾーン情報を提供して、エポック(UTC)に対応する時間を見つける必要があります。
次のLocalDateTime
ようなものがあるとします。
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
タイムゾーン情報を適用する必要がありますZonedDateTime
。私はロサンゼルスと同じタイムゾーンにいるので、次のようにします。
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
もちろん、これはタイムゾーンについての仮定を行います。また、たとえば、現地時間が夏時間(夏時間)の遷移に近い時間に名前を付けた場合など、発生する可能性のあるエッジケースがあります。これらは脇に置いておきましょうが、これらのケースが存在することに注意してください。
とにかく、有効なを取得できる場合はZonedDateTime
、次のように、これをエポックからのミリ秒数に変換できます。
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
ますか?