前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >还在使用“SimpleDateFormat”,工资低怨不了别人!!!

还在使用“SimpleDateFormat”,工资低怨不了别人!!!

作者头像
用户2242639
发布2021-06-29 15:38:48
2470
发布2021-06-29 15:38:48
举报
文章被收录于专栏:Java经验总结Java经验总结
SimpleDateFormat和DateFormat类线程安全的???在这高并发的大环境下,线程不安全的类都会慢慢舍弃掉。那用什么来代替呢,那就

使用LocalDate和LocalTime

静态工厂方法of创建一个LocalDate实例。LocalDate实例提供了多种方法来读取常用的值,比如年份、月份、星期几等,如下所示。

代码语言:javascript
复制
LocalDate date = LocalDate.of(2019, 8, 27);
int year = date.getYear();//2019----获取年份
Month month = date.getMonth();//AUGUST----获取月份
int day = date.getDayOfMonth();//27----获取天数
DayOfWeek dow = date.getDayOfWeek();//TUESDAY----获取星期几
int len = date.lengthOfMonth();//31----获取当月天数
boolean leap = date.isLeapYear();//false----获取是否闰年

静态工厂方法of创建一个LocalTime实例。LocalTime实例提供了多种方法来读取常用的值,比如小时、分钟、秒等,如下所示。

代码语言:javascript
复制
LocalTime time = LocalTime.of(23, 45, 20);
int hour = time.getHour();//23----获取小时
int minute = time.getMinute();//45----获取分钟
int second = time.getSecond();//20----获取秒数

使用LocalDateTime

静态工厂方法of创建一个LocalDateTime实例。LocalTime实例提供了多种方法来读取常用的值,比如年份、月份、星期几、小时、分钟、秒等,如下所示。

代码语言:javascript
复制
  LocalDateTime dateTime = LocalDateTime.of(2014, Month.MARCH, 18, 13, 45, 20);
  int year = dateTime.getYear();//2019----获取年份
  Month month = dateTime.getMonth();//AUGUST----获取月份
  int day = dateTime.getDayOfMonth();//27----获取天数
  DayOfWeek dow = dateTime.getDayOfWeek();//TUESDAY----获取星期几
  int hour = dateTime.getHour();//23----获取小时
  int minute = dateTime.getMinute();//45----获取分钟
  int second = dateTime.getSecond();//20----获取秒数

定义Duration或Period

上面获取时间,和获取时间的各个属性都已经有了,是不是感觉差了点什么,怎么获取两个时间差?

代码语言:javascript
复制
Period period = Period.between(LocalDate.of(2015, 3, 8), 
                               LocalDate.of(2014, 3, 18));
Duration duration = Duration.between(
LocalDateTime.of(2014, Month.MARCH, 18, 13, 45, 20),
LocalDateTime.of(2014, Month.MARCH, 18, 13, 5, 20));

日期----时间类中表示时间间隔的通用方法

操纵、解析和格式化日期

举例说明

代码语言:javascript
复制
LocalDate date1 = LocalDate.of(2019, 8, 28);//2019-08-28
LocalDate date2 = date1.withYear(1995);//1995-08-28
LocalDate date3 = date2.withDayOfMonth(30);//1995-08-28
LocalDate date4 = date3.with(ChronoField.MONTH_OF_YEAR, 4);//1995-04-28
LocalDate date1 = LocalDate.of(2019, 8, 28);//2019-08-28
LocalDate date2 = date1.plusDays(2);//2019-08-30
LocalDate date3 = date2.minusYears(24);//1995-08-30
LocalDate date4 = date3.minus(4, ChronoUnit.MONTHS);//1995-04-30

表示时间点的日期----时间类的通用方法

打印输出及解析日期时间对象

代码语言:javascript
复制
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date1 = LocalDate.of(1995, 4, 30);//1995-04-30
String formattedDate = date1.format(formatter);//1995-04-30
LocalDate date2 = LocalDate.parse(formattedDate, formatter);//30/04/1995
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java经验总结 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档