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

投稿日: 2019年1月30日
最終更新日:

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

YouTubeも見てね♪

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

Anker PowerCor

created by Rinker
Anker
¥4,990 (2024/03/15 15:06:44時点 Amazon調べ-詳細)

旅行には必須の大容量モバイルバッテリー!

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/03/15 19:06:06時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/03/15 19:03:46時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,080 (2024/03/15 19:03:47時点 Amazon調べ-詳細)

翼を授けよう!

ドラゴンクエスト メタリックモンスターズギャラリー メタルキング

created by Rinker
スクウェア・エニックス(SQUARE ENIX)
¥3,250 (2024/03/15 19:03:48時点 Amazon調べ-詳細)

みんな大好き経験値の塊をデスクに常備しておこう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥13,861 (2024/03/15 15:06:46時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

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から日付に変換してみます。

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

終わりに

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

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

CATEGORIES & TAGS

IT