毫秒生成的时间戳如何转化成东八区具体时间

365 阅读1分钟

假设现在有一个时间是1709101071419L

后端代码实现

Java代码(东八区时间)

在Java代码中,我们将时区从UTC调整为东八区(UTC+8):

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

public class TimestampConverter {
    public static void main(String[] args) {
        // 时间戳
        long timestamp = 1709101071419L;

        // 将时间戳转换为Instant对象
        Instant instant = Instant.ofEpochMilli(timestamp);

        // 转换为东八区时间
        ZonedDateTime dateTimeInBeijing = instant.atZone(ZoneId.of("Asia/Shanghai"));

        // 创建DateTimeFormatter来格式化时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
                .withZone(ZoneId.of("Asia/Shanghai"));

        // 格式化时间为字符串
        String formattedDate = formatter.format(dateTimeInBeijing);

        System.out.println("Date and Time in Beijing (UTC+8): " + formattedDate);
    }
}

这段Java代码中,通过将Instant转换为ZonedDateTime并指定ZoneId.of("Asia/Shanghai"),可以确保时间正确地转换为东八区时间,然后使用DateTimeFormatter进行格式化。

前端代码实现

JavaScript代码(东八区时间)

在JavaScript中,我们可以调整时间戳的显示方式来反映东八区的时间:

// 时间戳
const timestamp = 1709101071419;

// 创建一个新的Date对象
const date = new Date(timestamp);

// 转换为东八区时间,获取年月日时分秒
const formattedDate = date.toLocaleString("en-US", {timeZone: "Asia/Shanghai"});

console.log("Date and Time in Beijing (UTC+8): " + formattedDate);

这段JavaScript代码使用toLocaleString方法和{timeZone: "Asia/Shanghai"}选项来确保日期时间按照东八区时间来显示。

这样,不管是在Java还是JavaScript中,正确地将时间戳转换成了东八区的时间,并进行了格式化显示。 在这里插入图片描述

在这里插入图片描述