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

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

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

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Unixタイムスタンプとは具体的にどのような数値のことを指すのでしょうか?Javaでの定義を教えてください。

Unixタイムスタンプとは、コンピューターシステムで時刻を表現するための一つの形式です。具体的には、協定世界時(UTC)における「1970年1月1日0時0分0秒」を起点(Unixエポック)として、そこからどれくらいの時間が経過したかを数値で表したものです。Javaプログラミングにおいては、この経過時間を「ミリ秒(1000分の1秒)」単位の数値として扱うことが一般的です。この数値は時間の経過とともに増えていくため、世界中のどの場所からでも共通の物差しとして時間を管理できるという非常に大きなメリットがあります。Javaのシステム開発では、データの作成日時や更新日時をデータベースに保存する際、このUnixタイムスタンプ形式の数値が頻繁に利用されています。
Javaの例外処理の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

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

UGREEN USB-Cハブを見る

※ Amazon広告リンク