java-操控时间

java8以前

只有一个对象,单一,使用起来不方便

Date(日期)

表示一个日期值

Calendar(日历)

表示一个日历

java8及以后

粒度更小,操作方便

Instant(瞬时)

时间线上的瞬时点。

Clock(时钟)

一种时钟,使用一个时区提供对当前时间、日期和时间的访问。

Duration(基于时间时间量)

基于时间的时间量,如“34.5秒”。

Period(基于日期的时间量)

ISO-8601日历系统中基于日期的时间量,例如“2年3个月4天”。

LocalDate(日期)

ISO-8601日历系统中没有时区的日期,例如2007-12-03。

LocalTime(时间)

在ISO-8601日历系统中没有时区的时间,例如10:15:30。

LocalDateTime(日期时间)

在ISO-8601日历系统中没有时区的日期时间,例如2007-12-03T10:15:30。

ZonedDateTime(带时区的日期时间,最好用这个,避免时区异常)

在ISO-8601日历系统中带有时区的日期时间,例如2007-12-03T10:15:30+01:00 Europe/Paris。

Year(年)

在ISO-8601日历系统中的一年,如2007。

YearMonth(年月)

在ISO-8601日历系统中的一年一月,如2007-12。

MonthDay(月日)

在ISO-8601日历系统中的一个月日,如12-03。

OffsetTime(时间偏差)

在ISO-8601日历系统中,与UTC/格林尼治偏差的时间,例如10:15:30+01:00。

OffsetDateTime(日期时间偏差)

在ISO-8601日历系统中与UTC/格林尼治偏差的日期时间,例如2007-12-03T10:15:30+01:00。

两者转换

思路就是以Instant作为桥梁转换:

ZonedDateTime转Date

public Date asDate(ZonedDateTime zonedDateTime) {
    return Date.from(zonedDateTime.toInstant());
}

Date转ZonedDateTime

public ZonedDateTime asZDT(Date date) {
    return date.toInstant().atZone(ZoneId.systemDefault());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值