#记录Java小知识

什么是LocalDataTime以及如何使用LocalDataTime

在jdk8 以前 获取时间 我们使用得是SimpleDataFormat对时间及进行格式化,但是SimpleDataForm 调用的format是线程不安全的

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
String data = simpleDateFormat(data);

在format 中 calendar 是一个没有卓线程安全控制的共享变量,当多个线程同时使用相同SimpleDateFormat对象:当SimpleDateFormat 对象为全局变量时 就会存在多个线程使用同一个对象的情况,当一个线程调用calendar.setime方法时,可能正好另一个线程也调用这个方法把放设置的time值给修改了,这样就会导致返回的时间格式 并不是自己所需要的。
不仅format 是线程不安全的 ,parse 方法也是不安全的!
在jdk8以后 LocalDateTime 解决了这个问题:
其中 LocalDate 指挥获取年月日 LocalTime 只会获取时分秒;

 // 获取当前年月日
 LocalDate localDate = localDate.now();
 // 构造指定的年月日
 LocalDate localDate = localData.of(2020,6,6)
 // 获取当前时分秒
 LocalTime localtime = LocalTime.now()
 // 获取指定时分秒 
 LocalTime localtime = LocalTime.of(14,34,26)
// 获取年月日时分秒
LocalDateTime  localdatetime = LocalDateTime.now();

使用LocalDateTime 如何对对时间进行修改:

// 增加  一年
localDatetime = localDateTime.plusYears(1);
localDateTime = localDateTime.plus(1,ChronnUnit.YEARS)
// 减少一年
localDateTime = localDateTime.minus(1,ChronoUnit,MONTHS)
localDateTime = localDateTime.minusMonths(1);

// 修改某些 具体的数值 用with
// 修改为2015年
localDateTime = localDateTime.withYear(2015)
// 修改为 12约
localDateTime = localDateTime.with(ChronoField.MONTHS,12)

使用LocalDateTime 格式化时间:他自带有默认的格式化时间 这里就不记录了,记录一个自己常用的 自定义格式化时间
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(“dd/MM/yyyy”);
String time = localDate.format(dateTimeFormatter) ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值