LocalDateTime、LocalDate、Date 在数据库中可以选择时间类型 datetime,date
注意:
LocalDateTime、LocalDate可以与mybatis结合使用,但需要注意mysql版本
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.43</version>
</dependency>
Date 和 SimpleDateFormat 都是线程不安全的
LocalDateTime 和 DateTimeFormatter 都是线程安全的
//格式化时间日期
LocalDateTime dt = LocalDateTime.now();
String str = dt.format(DateTimeFormatter.ISO_DATE);
String str1 = dt.format(DateTimeFormatter.BASIC_ISO_DATE);
String str2 = dt.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
String str3 = dt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//str 2020-06-27
//str1 20200627
//str2 2020/06/27
//str3 2020-06-27 11:11:11
// 减使用minus
dt.minusYears(1L);
// 加使用plus
dt.plusMonths(5);
// 直接修改使用with
dt.withYear(2022);
//当天最大时间 2020-06-27 23:59:59
dt.with(LocalTime.MAX);
//当天最小时间 2020-06-27 00:00:00
dt.with(LocalTime.MIN);
Month month = dt.getMonth();
System.out.println(month);//JUNE
System.out.println(month.getValue());//6
//方法withNano(),直接舍弃纳秒
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
System.out.println(now.withNano(0));
//查看LocalDateTime相差天数
long days = Duration.between(LocalDateTime.now(),LocalDateTime.now()).toDays();
//查询LocalDate相差天数
long days = ChronoUnit.DAYS.between(endDate,startDate);
//localdate转localdatetime
LocalDate date = LocalDate.now();
// 创建一个默认的LocalTime实例,通常是午夜时间00:00
LocalTime time = LocalTime.MIDNIGHT;
LocalDateTime dateTime = LocalDateTime.of(date, time);
/**
* 日期转为LocalDateTime
*
* @param date 日期
* @return LocalDateTime
*/
public static LocalDateTime dateToLocalDateTime(final Date date) {
if (null == date) {
return null;
}
final Instant instant = date.toInstant();
final ZoneId zoneId = ZoneId.systemDefault();
final LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
return localDateTime;
}
/**
* 日期转为LocalDate
*
* @param date 日期
* @return LocalDateTime
*/
public static LocalDate dateToLocalDate(final Date date) {
if (null == date) {
return null;
}
final Instant instant = date.toInstant();
final ZoneId zoneId = ZoneId.systemDefault();
final LocalDate localDate = instant.atZone(zoneId).toLocalDate();
return localDate;
}
/**
* LocalDateTime转为日期
*
* @param localDateTime LocalDateTime
* @return 日期
*/
public static Date localDateTimeToDate(final LocalDateTime localDateTime) {
if (null == localDateTime) {
return null;
}
final ZoneId zoneId = ZoneId.systemDefault();
final ZonedDateTime zdt = localDateTime.atZone(zoneId);
final Date date = Date.from(zdt.toInstant());
return date;
}
/**
* LocalDate转为日期
*
* @param localDate
* @return
*/
public static Date localDateToDate(final LocalDate localDate) {
if (null == localDate) {
return null;
}
final ZoneId zoneId = ZoneId.systemDefault();
final ZonedDateTime zdt = localDate.atStartOfDay().atZone(zoneId);
final Date date = Date.from(zdt.toInstant());
return date;
}