tech.chakapoko.com
Home / Java / 日時

[Java]Unixタイムスタンプと日時の変換 (ZonedDateTime, LocalDateTime)

日時(ZonedDateTime)を Unix タイムスタンプに変換する

package com.example;

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Example {

    public static void main(String[] args) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssZ");
        ZonedDateTime zonedDateTime = ZonedDateTime.of(2020, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault());
        long epochSecond = zonedDateTime.toEpochSecond();
        System.out.println(epochSecond);
    }

}

実行結果:

1577804400

日時(ZonedDateTime)を Unix タイムスタンプ(ミリ秒)に変換する

ミリ秒に変換する場合は一度 Instant に変換します。

package com.example;

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Example {

    public static void main(String[] args) {
        ZonedDateTime zonedDateTime = ZonedDateTime.of(2020, 1, 1, 0, 0, 0, 0, ZoneId.systemDefault());
        long epochMilli = zonedDateTime.toInstant().toEpochMilli();
        System.out.println(epochMilli);
    }

}

実行結果:

1577804400000

日時(LocalDateTime)を Unix タイムスタンプに変換する

LocalDateTimeZonedDateTime に変換してから Unix タイムスタンプに変換します。

package com.example;

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

public class Example {

    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.of(2020, 1, 1, 0, 0, 0, 0);
        long epochSecond = localDateTime.atZone(ZoneId.systemDefault()).toEpochSecond();
        System.out.println(epochSecond);
    }

}

実行結果:

1577804400

Unix タイムスタンプを日時(ZonedDateTime)に変換する

Unix タイムスタンプを日時に変換するには一度 Instant を経由します。

package com.example;

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

public class Example {

    public static void main(String[] args) {
        Instant instant = Instant.ofEpochSecond(1577804400);
        ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
        System.out.println(zonedDateTime);
    }

}

実行結果:

2020-01-01T00:00+09:00[Asia/Tokyo]

Unix タイムスタンプ(ミリ秒)を日時(ZonedDateTime) に変換する

package com.example;

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

public class Example {

    public static void main(String[] args) {
        Instant instant = Instant.ofEpochMilli(1577804400000L);
        ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
        System.out.println(zonedDateTime);
    }

}

実行結果:

2020-01-01T00:00+09:00[Asia/Tokyo]

Unix タイムスタンプを日時(LocalDateTime) に変換する

package com.example;

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

public class Example {

    public static void main(String[] args) {
        Instant instant = Instant.ofEpochSecond(1577804400);
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        System.out.println(localDateTime);
    }

}

実行結果:

2020-01-01T00:00