什么是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) ;