DateTimeFormatter与SimpleDateFormat在Java8中有什么区别

今天就跟大家聊聊有关DateTimeFormatter与SimpleDateFormat在Java8中有什么区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

两者最大的区别是,Java8的DateTimeFormatter是线程安全的,而SimpleDateFormat并不是线程安全。

DateTimeFormatter与SimpleDateFormat在Java8中有什么区别

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中有什么区别有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注恰卡编程网行业资讯频道,感谢大家的支持。

发布于 2021-03-17 20:53:56
收藏
分享
海报
0 条评论
160
上一篇:Vue如何实现关联页面多级跳转功能 下一篇:CSS怎么设置盒子容器div高度始终为100%
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码