一、data 、calendar 、LocalDateTime 区别
- data
Date如果不格式化,打印出的日期可读性差
用SimpleDateFormat对时间进行格式化,但SimpleDateFormat是线程不安全的 - calendar
calendar是共享变量,并且这个共享变量没有做线程安全控制。
当多个线程同时使用相同的SimpleDateFormat对象【如用static修饰的SimpleDateFormat】调用format方法时,多个线程会同时调用calendar.setTime方法,可能一个线程刚设置好time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。 - LocalDateTime
使用方便简单快捷安全…
(1) LocalDate 获取年月日
(2) LocalTime 获取时分秒
(3) LocalDateTime 获取年月日时分秒
二、时间处理demo
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
/**
* java 1.8 时间新特性
*/
public class LocalDateTimeTest {
public static void main(String[] args) {
//Instant 对象可以单独获取时分秒
Instant instant = Instant.now();
//获取当前年月日
LocalDate localDate = LocalDate.now();
//获取几点几分几秒
LocalTime localTime1 = LocalTime.now();
//获取年月日时分秒
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
//格式化时间
//自定义格式化
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String format = localDateTime.format(dateTimeFormatter);
System.out.println(format);
// 将LocalDateTime字段以指定格式化日期的方式返回给前端
// @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
// protected LocalDateTime gmtModified;
// 对前端传入的日期进行格式化
// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// protected LocalDateTime gmtModified;
}
}