素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

【LocalDate/LocalDateTime】Java8以降で秒単位またはミリ秒単位のUnixTimeを取得する方法まとめ【EpochSecond/EpochMilli】

投稿日:

スポンサーリンク

336×280




UnixTimeに変換しよう

Java8で便利になった日付API

皆さんはJava8で一新された日付APIを利用していますか?

以前、当ブログでもご紹介致しました。

筆者はすっかり使いやすさの虜になってしまい、CalendarクラスやDateクラスはめっきり使わなくなりました。

直感的に扱いやすい点が魅力的ですよね♪

UnixTimeに変換するには?

そんな中で、システム開発をしているとUnixTimeで日付時刻を取り扱っている場合が出てきます。

UNIX時間(ユニックスじかん)またはUNIX時刻(ユニックスじこく、UNIX time(ユニックスタイム)、POSIX time(ポジックスタイム))とはコンピューターシステム上での時刻表現の一種。UNIXエポック、すなわち協定世界時 (UTC) での1970年1月1日午前0時0分0秒から形式的な経過秒数(すなわち、実質的な経過秒数から、その間に挿入された閏秒を引き、削除された閏秒を加えたもの)として表される。GPS時刻などとは異なり、大多数のシステムでは、本当の経過秒数を表すものではない
UNIX時間 – Wikipedia

しかし、この新しい日付APIを用いれば簡単UnixTimeに変換する事が出来ちゃいます!

今回はLocalDate及びLocalDateTimeそれぞれで、秒単位のパターンとミリ秒単位のパターンに変換する方法をご紹介致します。

手順

秒単位

まずは秒までUnixTimeを取得する方法をご紹介します。

LocalDate

LocalDateの場合は以下のように記述します。

まずはLocalDateZonedDateTimeに変換します。

この際に、UTCなのかJSTなのかで引数の値を変える必要があるので気をつけましょう。

そして、ZonedDateTimetoEpochSecondメソッドを使うことで秒単位のUnixTimeを取得することが可能になります♪

確認

それでは実行してみましょう。

それっぽい値が取れましたね。

では、このUnixTimeから日付に変換してみます。

正しく変換出来ていますね♪

LocalDateTime

LocalDateTimeの場合は以下のように記述します。

こちらも基本的にはLocalDateの時と同じです。

まずはLocalDateZonedDateTimeに変換します。

この際に、UTCなのかJSTなのかで引数の値を変える必要があるので気をつけましょう。

そして、ZonedDateTimetoEpochSecondメソッドを使うことで秒単位のUnixTimeを取得することが可能になります♪

確認

それでは実行してみましょう。

それっぽい値が取れましたね。

では、このUnixTimeから日付に変換してみます。

こちらも正しく変換出来ていますね♪

ミリ秒単位

次はミリ秒までのUnixTimeを取得してみます。

LocalDate

LocalDateの場合は以下のように記述します。

まずはLocalDateZonedDateTimeに変換します。

この際に、UTCなのかJSTなのかで引数の値を変える必要があるので気をつけましょう。
ここまでは秒単位の流れと同じですね。

そして、ここがポイントなのですが、ZonedDateTimetoInstantメソッドで一旦Instant化してからtoEpochMilliメソッドを使うことでミリ秒単位UnixTimeを取得することが可能になります♪

確認

それでは実行してみましょう。

こちらもそれっぽい値が取れました。

では、こちらもUnixTimeから日付に変換してみます。

dateコマンドでミリ秒のUnixTimeから復元する方法がイマイチわからなかったので、コチラ のサイトで変換して確認しました。

正しく変換出来ていますね♪

LocalDateTime

LocalDateTimeの場合は以下のように記述します。

まずはLocalDateZonedDateTimeに変換します。

この際に、UTCなのかJSTなのかで引数の値を変える必要があるので気をつけましょう。
ここまでは秒単位の流れと同じですね。

そして、ここがポイントなのですが、ZonedDateTimetoInstantメソッドで一旦Instant化してからtoEpochMilliメソッドを使うことでミリ秒単位UnixTimeを取得することが可能になります♪

確認

それでは実行してみましょう。

こちらもそれっぽい値が取れました。

では、こちらもUnixTimeから日付に変換してみます。

こちらも正しく変換出来ていますね♪

オススメの参考書

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

徹底攻略 Java SE 8 Silver 問題集1Z0-808対応

終わりに

以上のように、新しい日付APIを利用していれば、独自実装することなく既存のメソッドを利用することで簡単にUnixTimeを取得することが出来ました。

意外と知らない方が多いと思うので、困っている方はこちらの方法で試してみてください♪

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , ,

blogenist

Author: blogenist