📅  最后修改于: 2023-12-03 15:15:58.548000             🧑  作者: Mango
在 Java 中,UTC (Coordinated Universal Time,协调世界时) 是一种用于计算时间的标准。 UTC 基于原子钟,具有高度精确性和全球一致性。本文将介绍如何在 Java 中使用 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 时间戳转换为日期时间,可以使用以下代码:
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 时间戳转换为日期时间,以及格式化日期时间字符串。