格式化,以规定格式
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
String类型,LocalDateTime、LocalDate、localTime类型相互转换
日期拼接时间
//String转换为LocalDateTime
LocalDateTime localDateTime = LocalDateTime.parse(timeString,DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//LocaDateTime转换为localDate、localTime
LocalDate localDate = localDateTime.toLocalDate();
LocalTime localTime = localDateTime.toLocalTime();
//日期拼接时间,LocalDateTime = LocalDate + LocalTime
LocalDateTime clockTimeMin = localDate.atTime(LocalTime.of(00, 00, 00));
LocalDateTime clockTimeMax = localDate.atTime(LocalTime.of(23, 59, 59));
//LocaDateTime、LocalDate、localTime 转换为String
clockTimeMin.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDate日期间隔
LocalDate startDate = LocalDate.parse("2019-03-01",DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDate endDate = LocalDate.parse("2020-04-02",DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println("总相差的天数:" + startDate.until(endDate, ChronoUnit.DAYS));//总相差的天数:398
System.out.println("总相差的月数:" + startDate.until(endDate, ChronoUnit.MONTHS));//总相差的月数:13
System.out.println("总相差的年数:" + startDate.until(endDate, ChronoUnit.YEARS));//总相差的年数:1
Period period = Period.between(startDate, endDate);
System.out.println("相差:" + period.getYears() + "年 " + period.getMonths() + "个月 "+ period.getDays() + "天");//相差:1年1个月1天
LocalDate / LocalDateTime加减时间
方法1 | 方法1 | 说明 |
plusYears(long years) | minusYears(long years) | 返回增加/减少了年数的副本 |
plusMonths(long months) | minusMonths(long months) | 返回增加/减少了月数的副本 |
plusWeeks(long weeks) | minusWeeks(long weeks) | 返回增加/减少了周数的副本 |
plusDays(long days) | minusDays(long days) | 返回增加/减少了天数的副本 |
plusHours(long hours) | minusHours(long hours) | 返回增加/减少了小时数的副本 |
plusSeconds(long seconds) | minusMinutes(long minutes) | 返回增加/减少了分钟数的副本 |
plusSeconds(long seconds) | minusSeconds(long seconds) | 返回增加/减少了秒数的副本 |
plusNanos(long nanos) | minusNanos(long nanos) | 返回增加/减少了纳秒数的副本 |
实战场景:
新增补卡记录,要求与当前日期相隔7天不允许补卡。
/**
* 新增补卡记录
* @param recordClock
* @return
*/
@Override
public R<String> saveRecord(RecordClock recordClock) {
//获取当前日期
final String clockTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//将String类型的日期,转化为Date类型
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = null;
Date date2 = null;
try {
date1 = df.parse(recordClock.getClockTime());
date2 = df.parse(clockTime);
} catch (ParseException e) {
e.printStackTrace();
}
//计算时间间隔,num单位为毫秒数
long num = date2.getTime() - date1.getTime();
//毫秒转化为天
long interval = num / 1000 / 60 / 60 / 24;
if(interval>7){
return R.fail("间隔超过7天,不允许补卡");
}
recordClockMapper.insert(recordClock);
return R.ok();
}