Java 获取当前秒时间戳

介绍

时间戳是指自纪元(通常是1970年1月1日00:00:00 UTC)以来的秒数。在Java中,我们可以使用System.currentTimeMillis()方法获取当前的毫秒时间戳。然而,有时候我们只需要获取当前的秒时间戳。本文将介绍如何使用Java获取当前的秒时间戳,并提供相应的代码示例。

获取当前秒时间戳的方法

在Java中,有几种方式可以获取当前的秒时间戳:

方法一:使用System.currentTimeMillis()

我们可以使用System.currentTimeMillis()方法获取当前的毫秒时间戳,并通过除以1000来获得秒时间戳。

long currentTimestamp = System.currentTimeMillis() / 1000;

方法二:使用Instant.now()

java.time.Instant类是Java 8中引入的新类,它提供了用于表示时间戳的功能。我们可以使用Instant.now()方法获取当前的时间戳,并通过调用getEpochSecond()方法来获得秒时间戳。

import java.time.Instant;

Instant now = Instant.now();
long currentTimestamp = now.getEpochSecond();

方法三:使用LocalDateTimeZoneOffset

java.time.LocalDateTime类是Java 8中的另一个日期和时间类,它提供了更多的日期和时间操作功能。我们可以使用LocalDateTime.now()方法获取当前的日期和时间,并通过调用toEpochSecond()方法和ZoneOffset.UTC来获得秒时间戳。

import java.time.LocalDateTime;
import java.time.ZoneOffset;

LocalDateTime now = LocalDateTime.now();
long currentTimestamp = now.toEpochSecond(ZoneOffset.UTC);

示例代码

下面是一个完整的示例代码,演示如何使用以上三种方法获取当前的秒时间戳。

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

public class CurrentTimestampExample {

    public static void main(String[] args) {
        // 方法一:使用System.currentTimeMillis()
        long currentTimestamp1 = System.currentTimeMillis() / 1000;
        System.out.println("方法一:" + currentTimestamp1);

        // 方法二:使用Instant.now()
        Instant now = Instant.now();
        long currentTimestamp2 = now.getEpochSecond();
        System.out.println("方法二:" + currentTimestamp2);

        // 方法三:使用LocalDateTime和ZoneOffset
        LocalDateTime now2 = LocalDateTime.now();
        long currentTimestamp3 = now2.toEpochSecond(ZoneOffset.UTC);
        System.out.println("方法三:" + currentTimestamp3);
    }
}

类图

下面是本示例代码中使用的两个类的类图。

classDiagram
    class CurrentTimestampExample {
        +main(String[]): void
    }
    class System {
        +static currentTimeMillis(): long
    }
    class Instant {
        +static now(): Instant
        +getEpochSecond(): long
    }
    class LocalDateTime {
        +static now(): LocalDateTime
        +toEpochSecond(ZoneOffset): long
    }
    class ZoneOffset {
        +static UTC: ZoneOffset
    }

关系图

下面是本示例代码中使用的两个类之间的关系图。

erDiagram
    Instant ||.. LocalDateTime : uses
    LocalDateTime ||.. ZoneOffset : uses

结论

本文介绍了如何使用Java获取当前的秒时间戳。我们可以使用System.currentTimeMillis()方法除以1000,使用Instant.now().getEpochSecond()方法,或者使用LocalDateTime.now().toEpochSecond(ZoneOffset.UTC)方法来实现这个目标。通过了解这些方法,我们可以在开发中更方便地获取和处理时间戳。希望本文对您有所帮助!

参考资料

  • [Java 8 Instant](
  • [Java 8 LocalDateTime](
  • [Java 8 ZoneOffset](