先上代码:
ZonedDateTime dateTime = ZonedDateTime.ofInstant(
Instant.ofEpochMilli(System.currentTimeMillis()),
zone
);
//2019-12-01T19:01:46+08:00
String formattedDate = dateTime.format(
DateTimeFormatter.ofPattern("yyyy-MM-dd")
);
//2019-12-01
String formattedTime = dateTime.format(
DateTimeFormatter.ofPattern("HH:mm:ss")
);
//19:01:46
ZonedDateTime
类
ZonedDateTime
是Java 8中用于表示带有时区信息的日期和时间的类。它包含了日期、时间和时区的信息。
ZonedDateTime.ofInstant
是ZonedDateTime
类的一个静态方法,用于根据给定的时间戳和时区创建一个ZonedDateTime
对象。它的方法签名如下:
public static ZonedDateTime ofInstant(Instant instant, ZoneId zone)
参数说明:
instant
:一个Instant
对象,表示时间戳。Instant
是一个不带时区信息的时间点,通常用于表示从1970年1月1日午夜开始经过的秒数或毫秒数。zone
:一个ZoneId
对象,表示时区。ZoneId
是一个用于表示时区标识符的类,例如:"Asia/Shanghai"、"America/New_York"等。
Instant
类
Instant
是Java 8中用于表示时间戳的类。它表示从1970年1月1日午夜开始经过的秒数或毫秒数。
Instant.ofEpochMilli()
是Instant
类的一个静态方法,用于根据给定的以毫秒为单位的时间戳创建一个Instant
对象。它的方法签名如下:
public static Instant ofEpochMilli(long epochMilli)
参数说明:
epochMilli
:一个long
类型的参数,表示以毫秒为单位的时间戳。
DateTimeFormatter
类
dateTime.format()
是DateTimeFormatter
类的一个实例方法,用于将日期时间对象格式化为指定的字符串表示形式。它的方法签名如下:
public String format(TemporalAccessor temporal)
参数说明:
temporal
:一个实现了TemporalAccessor
接口的对象,表示日期时间。ZonedDateTime
是TemporalAccessor
接口的一个实现类。
DateTimeFormatter.ofPattern("HH:mm:ss")
是DateTimeFormatter
类的一个静态方法,用于创建一个日期时间格式化器对象。它的方法签名如下:
public static DateTimeFormatter ofPattern(String pattern)
参数说明:
pattern
:一个字符串,表示日期时间的格式模式。