0.引言
众所周知,Java中的Date类型在新版本Java中好多方法是过时的方法,那么常见的替代Date的一个方法就是ZonedDateTime
,他是带时区的,如果说只需要简单不带时区的日期类型那么LocalDateTime
很好用。
1.使用
当我们使用Date
时,常见的就是获取当前时间
Date nowDate = new Date();
那么在使用ZonedDateTime
时,与之对应的获取当前时间为
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.systemDefault());
其中ZoneId.systemDefault()
代表获取当前系统的默认时区,因为ZonedDateTime
是包含时区信息的。
我们使用Date
时,经常进行格式化
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date nowDate = new Date();
String dateStr = simpleDateFormat.format(nowDate);
那么对应的新代码为
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.systemDefault());
String dateStr = dateTimeFormatter.format(zonedDateTime);
基本一致,只是多了个指定时区和类名稍加变化。
那我们如何实现Date
转ZonedDateTime
呢?
其中一种方法如下:
Date nowDate = new Date();
ZonedDateTime zonedDateTime1 = ZonedDateTime.ofInstant(nowDate.toInstant(),ZoneId.systemDefault());
由ZonedDateTime
转为Date
则可以使用如下方法:
ZonedDateTime zonedDateTime = ZonedDateTime.now(ZoneId.systemDefault());
Date date = Date.from(zonedDateTime.toInstant());
使用了ZonedDateTime
后会有很多好用的方法
日期加减只需要调用个方法即可完成。
再也不用手动判断啦!

© 版权声明
- 本博客所拥有的文章除特别声明外,均默认采用 CC BY 4.0 许可协议。
- 文章部分内容可能来源于公共网络,如有侵权,请联系博主在核实后进行修改或删除。
THE END
- 最新
- 最热
只看作者