カテゴリ: Javaの例外処理 更新日: 2026/02/11

JavaでUnixタイムスタンプ(ミリ秒)を取得・変換する方法を徹底解説!

369
Java のミリ秒(Unix タイムスタンプ)を取得・変換する方法

先生と生徒の会話形式で理解しよう

生徒

「Javaで現在時刻をミリ秒で取得する方法ってありますか?あと、Unixタイムスタンプって何ですか?」

先生

「Javaでは簡単にUnixタイムスタンプを取得できますよ。Unixタイムスタンプは、1970年1月1日0時0分0秒(UTC)からの経過時間を秒やミリ秒で表した数値のことです。」

生徒

「じゃあ、そのミリ秒を日付に変換したり、逆に日付からミリ秒にしたりもできますか?」

先生

「できますよ。それでは、JavaでのUnixタイムスタンプの扱い方を順に見ていきましょう!」

1. Unixタイムスタンプ(ミリ秒)とは?

1. Unixタイムスタンプ(ミリ秒)とは?
1. Unixタイムスタンプ(ミリ秒)とは?

Unixタイムスタンプとは、1970年1月1日0時0分0秒(UTC)からの経過時間を秒またはミリ秒単位で表した数値のことです。JavaではこのUnixエポックからのミリ秒値を取得・変換することで、日付や時間の管理を効率的に行えます。

例えばWeb APIのレスポンス、データベースの時刻管理、ログファイルなどでよく使われています。

2. 現在時刻のUnixタイムスタンプ(ミリ秒)を取得する方法

2. 現在時刻のUnixタイムスタンプ(ミリ秒)を取得する方法
2. 現在時刻のUnixタイムスタンプ(ミリ秒)を取得する方法

Javaで現在時刻をミリ秒単位で取得するには、System.currentTimeMillis()を使うのが最もシンプルです。


public class TimestampExample {
    public static void main(String[] args) {
        long millis = System.currentTimeMillis();
        System.out.println("現在のUnixタイムスタンプ(ミリ秒): " + millis);
    }
}

現在のUnixタイムスタンプ(ミリ秒): 1736013457123

この方法はJava SE 1.0から使える古典的な方法ですが、非常に信頼性が高いです。

3. Instantクラスを使ってミリ秒を取得・変換

3. Instantクラスを使ってミリ秒を取得・変換
3. Instantクラスを使ってミリ秒を取得・変換

Java 8以降ではjava.timeパッケージのInstantを使うのが主流です。Instantはタイムスタンプ専用のクラスで、ミリ秒取得や変換も簡単にできます。


import java.time.Instant;

public class InstantExample {
    public static void main(String[] args) {
        Instant now = Instant.now();
        long millis = now.toEpochMilli();
        System.out.println("Instantから取得したミリ秒: " + millis);
    }
}

Instantから取得したミリ秒: 1736013457123

toEpochMilli()メソッドを使うことで、Instantからミリ秒のUnixタイムスタンプを取得できます。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. ミリ秒から日付(LocalDateTime)へ変換する方法

4. ミリ秒から日付(LocalDateTime)へ変換する方法
4. ミリ秒から日付(LocalDateTime)へ変換する方法

取得したミリ秒を日付形式に変換したい場合は、InstantLocalDateTimeに変換します。変換にはZoneId(タイムゾーン)の指定が必要です。


import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;

public class ConvertToDateTime {
    public static void main(String[] args) {
        long millis = 1736013457123L;
        Instant instant = Instant.ofEpochMilli(millis);
        LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Tokyo"));
        System.out.println("変換後の日時: " + dateTime);
    }
}

変換後の日時: 2025-09-05T10:57:37.123

日本時間に変換したい場合はZoneId.of("Asia/Tokyo")を使います。タイムゾーンを間違えると、表示される時刻も変わってしまうので注意しましょう。

5. LocalDateTimeからミリ秒に変換する方法

5. LocalDateTimeからミリ秒に変換する方法
5. LocalDateTimeからミリ秒に変換する方法

逆にLocalDateTimeからUnixタイムスタンプ(ミリ秒)を取得するには、まずZonedDateTimeInstantに変換する必要があります。


import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.Instant;

public class ConvertToMillis {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.of(2025, 9, 5, 10, 57, 37);
        ZonedDateTime zonedDateTime = dateTime.atZone(ZoneId.of("Asia/Tokyo"));
        Instant instant = zonedDateTime.toInstant();
        long millis = instant.toEpochMilli();
        System.out.println("ミリ秒に変換: " + millis);
    }
}

ミリ秒に変換: 1736013457000

このように日付と時刻をミリ秒に変換できれば、Webサービスやデータベースなどでの時刻管理にも活用できます。

6. Dateクラスからミリ秒を取得する方法

6. Dateクラスからミリ秒を取得する方法
6. Dateクラスからミリ秒を取得する方法

古いJavaコードではjava.util.Dateが使われていることがあります。この場合、getTime()メソッドでミリ秒を取得できます。


import java.util.Date;

public class DateExample {
    public static void main(String[] args) {
        Date date = new Date();
        long millis = date.getTime();
        System.out.println("Dateクラスのミリ秒: " + millis);
    }
}

Dateクラスのミリ秒: 1736013457123

新しいプロジェクトではjava.timeを使うことが推奨されますが、既存コードの保守ではDateクラスもよく出てきます。

7. タイムスタンプをフォーマットして表示する方法

7. タイムスタンプをフォーマットして表示する方法
7. タイムスタンプをフォーマットして表示する方法

取得したUnixタイムスタンプを「yyyy-MM-dd HH:mm:ss」形式で整形表示したい場合は、DateTimeFormatterを使います。


import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class FormatTimestamp {
    public static void main(String[] args) {
        long millis = 1736013457123L;
        Instant instant = Instant.ofEpochMilli(millis);
        LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.of("Asia/Tokyo"));
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formatted = dateTime.format(formatter);
        System.out.println("フォーマット表示: " + formatted);
    }
}

フォーマット表示: 2025-09-05 10:57:37

日付を見やすい形式に整えることで、ログ表示や画面表示に活用しやすくなります。

Javaの例外処理の一覧へ
新着記事
Flutterアプリの署名設定(Android・iOSのポイント)
Flutterアプリの署名設定を完全解説!Android・iOSのビルドとデプロイ初心者ガイド
Java のインターフェースとは?普通のクラスとの違いを学ぼう
Javaのインターフェースとは?普通のクラスとの違いを学ぼう【初心者向け解説】
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
EC2の料金体系を完全解説!オンデマンド・リザーブド・無料枠の違いとは?
EC2の料金体系を完全解説!オンデマンド・リザーブド・無料枠の違いとは?
人気記事
インスタンスタイプの料金比較と最適な選び方(最新2025年版)
AWSのインスタンスタイプの料金比較と最適な選び方【2025年最新版】
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCエンドポイントとは?種類・使い方・S3連携まで完全解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】VPCの料金体系まとめ!無料枠・通信費・各種サービスごとの料金を徹底解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説
【AWS】s3 cpコマンド完全ガイド!基本・recursive・exclude/includeも解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク