📜  Java 中的 UTC(1)

📅  最后修改于: 2023-12-03 15:15:58.548000             🧑  作者: Mango

Java 中的 UTC

在 Java 中,UTC (Coordinated Universal Time,协调世界时) 是一种用于计算时间的标准。 UTC 基于原子钟,具有高度精确性和全球一致性。本文将介绍如何在 Java 中使用 UTC。

获取当前时间的 UTC 值

要获取当前时间的 UTC 值,可以使用以下代码:

Instant now = Instant.now();
long utc = now.getEpochSecond();
System.out.println(utc);

Instant.now() 方法返回一个 Instant 对象,该对象表示当前时间。getEpochSecond() 方法将 Instant 对象转换为 UTC 时间戳(以秒为单位)。上面的代码将 UTC 时间戳打印到控制台。

要获取当前时间的毫秒级别 UTC 值,可以使用以下代码:

Instant now = Instant.now();
long utcMillis = now.toEpochMilli();
System.out.println(utcMillis);

toEpochMilli() 方法将 Instant 对象转换为毫秒级别的 UTC 时间戳。

将 UTC 值转换为日期时间

要将 UTC 时间戳转换为日期时间,可以使用以下代码:

long utc = 1627998113L;
Instant instant = Instant.ofEpochSecond(utc);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("UTC"));
System.out.println(zonedDateTime.toString());

以上代码将 UTC 时间戳 1627998113 转换为 Instant 对象,然后使用 atZone() 方法将其转换为指定时区的 ZonedDateTime 对象(这里使用的是 UTC 时区)。toString() 方法将 ZonedDateTime 对象格式化为字符串并打印到控制台。

如果要将 UTC 时间戳转换为本地日期时间,则需要使用本地时区的 ZoneId,例如:

long utc = 1627998113L;
Instant instant = Instant.ofEpochSecond(utc);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.systemDefault());
System.out.println(zonedDateTime.toString());

以上代码使用 ZoneId.systemDefault() 获取本地时区,将 UTC 时间戳转换为本地日期时间并打印到控制台。

格式化日期时间字符串

要将日期时间格式化为指定的字符串格式,可以使用 DateTimeFormatter 类。例如,要将日期时间格式化为 ISO 8601 格式,可以使用以下代码:

ZonedDateTime zonedDateTime = ZonedDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME;
String formattedDateTime = zonedDateTime.format(formatter);
System.out.println(formattedDateTime);

以上代码使用 DateTimeFormatter.ISO_DATE_TIME 获取 ISO 8601 格式的日期时间格式化程序。format() 方法将 ZonedDateTime 对象格式化为字符串,并将其打印到控制台。

也可以创建自定义的日期时间格式化程序,例如:

ZonedDateTime zonedDateTime = ZonedDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = zonedDateTime.format(formatter);
System.out.println(formattedDateTime);

以上代码使用自定义的日期时间格式字符串 yyyy-MM-dd HH:mm:ss 创建格式化程序。format() 方法将 ZonedDateTime 对象格式化为字符串,并将其打印到控制台。

结论

Java 中的 UTC 提供了高效、准确和全球一致的方式来计算日期和时间。使用 Instant 类可以轻松地获取当前时间的 UTC 值,而 ZonedDateTime 类则可以将 UTC 时间戳转换为日期时间,以及格式化日期时间字符串。