DateTimeFormatter与SimpleDateFormat在Java8中有什么区别
今天就跟大家聊聊有关DateTimeFormatter与SimpleDateFormat在Java8中有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
两者最大的区别是,Java8的DateTimeFormatter是线程安全的,而SimpleDateFormat并不是线程安全。
packagecom.main; importjava.text.DateFormat; importjava.text.SimpleDateFormat; importjava.time.LocalDate; importjava.time.LocalDateTime; importjava.time.format.DateTimeFormatter; importjava.util.Date; publicclassMain{ publicstaticvoidmain(Stringargs[]){ //解析日期 StringdateStr="2016年10月25日"; DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy年MM月dd日"); LocalDatedate=LocalDate.parse(dateStr,formatter); //日期转换为字符串 LocalDateTimenow=LocalDateTime.now(); DateTimeFormatterformat=DateTimeFormatter.ofPattern("yyyy年MM月dd日hh:mma"); StringnowStr=now.format(format); System.out.println(nowStr); //ThreadLocal来限制SimpleDateFormat System.out.println(format(newDate())); } //要在高并发环境下能有比较好的体验,可以使用ThreadLocal来限制SimpleDateFormat只能在线程内共享,这样就避免了多线程导致的线程安全问题。 privatestaticThreadLocal<DateFormat>threadLocal=newThreadLocal<DateFormat>(){ @Override protectedDateFormatinitialValue(){ returnnewSimpleDateFormat("yyyy-MM-ddHH:mm:ss"); } }; publicstaticStringformat(Datedate){ returnthreadLocal.get().format(date); } }
Java8 (LocalDateTime) 时间转换
注意:LocalDateTime是带时分秒的
1.将LocalDateTime转为自定义的时间格式的字符串
publicstaticStringgetDateTimeAsString(LocalDateTimelocalDateTime,Stringformat){ DateTimeFormatterformatter=DateTimeFormatter.ofPattern(format); returnlocalDateTime.format(formatter); }
2.将long类型的timestamp转为LocalDateTime
publicstaticLocalDateTimegetDateTimeOfTimestamp(longtimestamp){ Instantinstant=Instant.ofEpochMilli(timestamp); ZoneIdzone=ZoneId.systemDefault(); returnLocalDateTime.ofInstant(instant,zone); }
3.将LocalDateTime转为long类型的timestamp
publicstaticlonggetTimestampOfDateTime(LocalDateTimelocalDateTime){ ZoneIdzone=ZoneId.systemDefault(); Instantinstant=localDateTime.atZone(zone).toInstant(); returninstant.toEpochMilli(); }
4.将某时间字符串转为自定义时间格式的LocalDateTime
publicstaticLocalDateTimeparseStringToDateTime(Stringtime,Stringformat){ DateTimeFormatterdf=DateTimeFormatter.ofPattern(format); returnLocalDateTime.parse(time,df); }
看完上述内容,你们对DateTimeFormatter与SimpleDateFormat在Java8中有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。
推荐阅读
-
Java8中怎么正确高效的使用并行流
-
Java8如何使用CompletableFuture构建异步应用方式
-
基于Java8并行流有哪些需要注意的地方
这篇文章主要介绍了基于Java8并行流有哪些需要注意的地方,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大...
-
Java8中怎么将Array转换为Stream
本篇文章给大家分享的是有关Java8中怎么将Array转换为Stream,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇...
-
Java8中有哪些常用的时间api
这篇文章给大家介绍Java8中有哪些常用的时间api,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Insta...
-
如何在Java 8中引入lambda表达式
本篇文章给大家分享的是有关如何在Java8中引入lambda表达式,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章...
-
怎么在Java8怎么在Map中新增数据
这期内容当中小编将会给大家带来有关怎么在Java8怎么在Map中新增数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文...
-
怎么在java8项目中对List对象属性去重
怎么在java8项目中对List对象属性去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面...
-
怎么在Java8中给forEach()函数提供index值
怎么在Java8中给forEach()函数提供index值?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细...
-
Java8中groupBy实现集合的分组
这篇文章主要介绍Java8中groupBy实现集合的分组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!场景...