目前的项目开发中,大部分项目还是在使用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():当前时间减几个小时
相对的加减天数也有;
【结束】希望能帮到您,本人在实习期间,有兴趣交个朋友阿
本文介绍了在Java开发中,从JDK7的Date和SimpleDateFormat到JDK8 LocalDate和DateTimeFormatter的时间处理升级。JDK7中的Date存在线程不安全和时区处理复杂的问题,而JDK8引入的新时间API提供了更安全和方便的解决方案,如LocalDateTime的plusHours()和minusHours()方法。此外,还展示了如何获取不同时区的时间,并通过ZonedId获取所有可用的时区。对于开发者来说,掌握JDK8的时间API能提高开发效率和代码质量。

被折叠的 条评论
为什么被折叠?



