1. 概述

纪元时间,也称为Unix时间,是一种将日期和时间表示为单一数值的系统。它测量的是自1970年1月1日,UTC时间00:00:00以来经过的毫秒数。由于其简单性和易于操作性,纪元时间在计算机系统和编程语言中被广泛使用。

在这个教程中,我们将探讨如何将毫秒级的纪元时间转换为LocalDateLocalDateTime

2. 将纪元时间转换为LocalDate

为了将纪元时间转换为LocalDate,我们需要将毫秒级的纪元时间转换为Instant对象。

Instant表示UTC时区时间线上的一个点:

long epochTimeMillis = 1624962431000L; // Example epoch time in milliseconds
Instant instant = Instant.ofEpochMilli(epochTimeMillis);

一旦我们有了Instant对象,我们可以使用atZone()方法指定时区并提取日期部分将其转换为LocalDate对象:

ZoneId zoneId = ZoneId.systemDefault(); // Use the system default time zone
LocalDate localDate = instant.atZone(zoneId).toLocalDate();

最后,我们可以以人类可读的格式输出转换后的LocalDate对象:

System.out.println(localDate); // Output: 2021-06-29

我们可以使用DateTimeFormatter类以特定模式格式化日期:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = localDate.format(formatter);
System.out.println(formattedDate); // Output: 2021-06-29

根据需求选择不同的模式。

以下是脚本的示例:

long epochTimeMillis = 1624962431000L; // Example epoch time in milliseconds
Instant instant = Instant.ofEpochMilli(epochTimeMillis);

ZoneId zoneId = ZoneId.systemDefault(); // Use the system default time zone
LocalDate localDate = instant.atZone(zoneId).toLocalDate();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedDate = localDate.format(formatter);
System.out.println(formattedDate); // Output: 2021-06-29

通过这四个步骤,我们可以轻松地将毫秒级的纪元时间转换为LocalDate,甚至可以指定输出格式。

3. 将纪元时间转换为LocalDateTime

将毫秒级的纪元时间转换为LocalDateTime的步骤与上述LocalDate的示例类似。唯一的区别是需要导入LocalDateTime类。

将所有内容整合在一起,以下是转换到LocalDateTime的脚本:

long epochTimeMillis = 1624962431000L; // Example epoch time in milliseconds
Instant instant = Instant.ofEpochMilli(epochTimeMillis);

ZoneId zoneId = ZoneId.systemDefault(); // Use the system default time zone
LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = localDateTime.format(formatter);
System.out.println(formattedDateTime); // Output: 2021-06-29 12:13:51

这个脚本将纪元时间转换为LocalDateTime,并且我们可以使用DateTimeFormatter类来格式化日期和时间。

4. 总结

在这篇文章中,我们探讨了将毫秒级的纪元时间转换为LocalDateLocalDateTime的过程。这是一个相当直接的步骤,我们利用了DateTimeFormatter类将输出转换为特定的日期或时间格式。

这篇文章的完整实现可以在GitHub上找到。