jdk8中LocatDateTime的应用

本文介绍了在Java开发中,从JDK7的Date和SimpleDateFormat到JDK8 LocalDate和DateTimeFormatter的时间处理升级。JDK7中的Date存在线程不安全和时区处理复杂的问题,而JDK8引入的新时间API提供了更安全和方便的解决方案,如LocalDateTime的plusHours()和minusHours()方法。此外,还展示了如何获取不同时区的时间,并通过ZonedId获取所有可用的时区。对于开发者来说,掌握JDK8的时间API能提高开发效率和代码质量。

目前的项目开发中,大部分项目还是在使用jdk7或者jdk8,并不是最新的jdk版本不好用,而是选择比较稳定且够用的就行。
需求: 在开发中,我们经常需要使用到时间,jdk7中经常使用如下

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//当前时间
String dateTime = sdf.format(date);

问题: jdk7中的Date是线程不安全的,且与sql中Date同名,还有处理时区问题麻烦。
解决问题:jdk8使用了新的时间Api

LocatDateTime date = LocatDateTime.now();
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//当前时间
String dateTime = dtf.format(date);

还有国际时间的获取:

LocalDateTime now = LocalDateTime.now(Clock.systemUTC());
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//当前国际时间
String dateTime = dtf.format(date);

**还有各时区的获取:**通过提供的一个类ZonedId的getAvailableZoneIds方法可以获取到一个Set集合,集合中封装了600个时区。

//获取所有的时区
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
LocalDateTime date = LocalDateTime.now();
//不同时区的时间
for(String zoneId:zoneIds){
    ZonedDateTime dateTime = date.atZone(ZoneId.of(zoneId));
    System.out.println(dateTime);
}

新时间Api的LocalDateTime中,我在使用中发现了比较便捷的方法是
plusHours():当前时间加几个小时
minusHours():当前时间减几个小时

相对的加减天数也有;

【结束】希望能帮到您,本人在实习期间,有兴趣交个朋友阿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值