如何在Java中获取Unix时间戳

2,848 阅读2分钟

在这篇文章中,我们将在Java中获得unix时间戳。

根据wikipedia
Unix时间是一个描述时间点的系统。它是自Unix纪元以来所经过的秒数,不包括闰秒。Unix纪元是1970年1月1日的00:00:00 UTC。

Unix时间是描述时间点的标准方式,在多个类似unix的操作系统中使用。

在Java中获取unix时间戳的方法

在Java中获取unix时间戳有多种方法。

使用即时类

如果你使用的是Java 8或更高版本,你可以使用Instant 类在Java中获得unix时间戳。

package org.arpit.java2blog;

import java.time.Instant;

public class GetUnixTimeStampMain {

    public static void main(String[] args) {
        long unixTimestamp = Instant.now().getEpochSecond();
        System.out.println("Unix timestamp: "+unixTimestamp);
    }
}

输出

Unix timestamp: 1663659792

使用System.currentTimeMillis()

你可以避免创建日期/即时对象,并使用System.currentTimeMillis() 来获得以毫秒为单位的当前时间。你可以通过1000L ,将毫秒转换为秒。

package org.arpit.java2blog;

public class GetUnixTimeStampSystem {

    public static void main(String[] args) {
        long unixTimestamp = System.currentTimeMillis()/1000L;
        System.out.println("Unix timestamp: " + unixTimestamp);
    }
}

输出

Unix timestamp: 1663660088

使用Date的getTime()方法

你可以使用传统的Date的getTime()方法来获得Java中的unix时间戳。你需要将()时间除以1000L ,将毫秒转换为秒。

package org.arpit.java2blog;

import java.util.Date;

public class GetUnixTimeStampDate {

    public static void main(String[] args) {
        long unixTimestamp = new Date().getTime()/1000L;
        System.out.println("Unix timestamp: " + unixTimestamp);
    }
}

输出

Unix timestamp: 1663660228

在Java中把Date转换为unix时间戳

使用即时类

你可以使用toInstant() 方法从Date对象中获得Instant() ,使用getEpochSecond() 获得unix时间戳。

package org.arpit.java2blog;

import java.util.Calendar;
import java.util.Date;

public class GetUnixTimeStampDate {

    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH, 20);
        cal.set(Calendar.MONTH, 8);
        cal.set(Calendar.YEAR, 2022);

        Date givenDate = cal.getTime();
        long unixTimestamp = givenDate.toInstant().getEpochSecond();
        System.out.println("Unix timestamp: "+unixTimestamp);

    }
}

输出

Unix timestamp: 1663660884

你也可以用LocalDate代替java.util.Date 。你需要先把LocalDate转换为Instant,然后用getEpochSecond() ,在Java中把LocalDate转换为unix时间戳。

package org.arpit.java2blog;

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneOffset;

public class GetUnixTimeStampDate {

    public static void main(String[] args) {
        // Get LocalDate object
        LocalDate localDate = LocalDate.of(2022,10,23);

        // Convert LocalDate to Instant with ZoneOffSet
        Instant instant = localDate.atStartOfDay().toInstant(ZoneOffset.UTC);

        // Get unix timestamp from Instant
        long epochSecond = instant.getEpochSecond();
        System.out.println("Unix timestamp: "+epochSecond);

    }
}

输出

Unix timestamp: 1666483200

使用Date的getTime()方法

你可以使用传统的Date的getTime()方法,在Java中把Date转换为unixTimeStamp。你需要将()时间除以1000L ,将毫秒转换为秒。

package org.arpit.java2blog;

import java.util.Calendar;
import java.util.Date;

public class GetUnixTimeStampDate {

    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH, 20);
        cal.set(Calendar.MONTH, 8);
        cal.set(Calendar.YEAR, 2022);

        Date givenDate = cal.getTime();
        long unixTimestamp = givenDate.getTime()/1000L;
        System.out.println("Unix timestamp: "+unixTimestamp);

    }
}

输出

Unix timestamp: 1663660228

以上就是关于如何在Java中获取Unix时间戳的全部内容。