这里我们主要用 LocalDateTime和ChronoUnit类来做时间的减法运算
private static long getDaysDifference(Date dateTime){
Date date = new Date();
//当前时间
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
//转化时间
LocalDateTime dateTime1 = LocalDateTime.ofInstant(dateTime.toInstant(), ZoneId.systemDefault());
// 计算日期时间差 localDateTime - dateTime1
long daysDifference = ChronoUnit.DAYS.between(dateTime1, localDateTime);
return daysDifference;
}
针对字符串,用了date转化。
private static long getDaysDifference(String dateTime) throws ParseException {
//String dateTime = “2005-06-09 12:20:32”;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(dateTime);
return getDaysDifference(date);
}
ChronoUnit类的常用方法
//ChronoUnit类用法
private static void chronoUnitTest(){
//当前时间
LocalDateTime today = LocalDateTime.now();
//2020-05-21 00:00:00:00
LocalDateTime birthDate = LocalDateTime.of(2020, 5, 21, 0, 0, 0, 0);
System.out.println("相差的年数: " + ChronoUnit.YEARS.between(birthDate,today));
System.out.println("相差的月数: " + ChronoUnit.MONTHS.between(birthDate,today));
System.out.println("相差的周数: " + ChronoUnit.WEEKS.between(birthDate,today));
System.out.println("相差的天数: " + ChronoUnit.DAYS.between(birthDate,today));
System.out.println("相差的时数: " + ChronoUnit.HOURS.between(birthDate, today));
System.out.println("相差的分数: " + ChronoUnit.MINUTES.between(birthDate, today));
System.out.println("相差的秒数: " + ChronoUnit.SECONDS.between(birthDate,today));
System.out.println("相差的毫秒数: " + ChronoUnit.MILLIS.between(birthDate,today));
System.out.println("相差的微秒数: " + ChronoUnit.MICROS.between(birthDate,today));
System.out.println("相差的纳秒数: " + ChronoUnit.NANOS.between(birthDate, today));
System.out.println("相差的半天数: " + ChronoUnit.HALF_DAYS.between(birthDate, today));
System.out.println("相差的十年数: " + ChronoUnit.DECADES.between(birthDate,today));
System.out.println("相差的世纪有年数: " + ChronoUnit.CENTURIES.between(birthDate,today));
System.out.println("相差的千年数: " + ChronoUnit.MILLENNIA.between(birthDate,today));
System.out.println("相差的纪元数: " + ChronoUnit.ERAS.between(birthDate,today));
}
在main函数里面测试。
public static void main(String[] args) {
try {
// 输出结果
System.out.println("日期时间差(以天为单位):" + getDaysDifference("2015-06-09 12:20:32") + "天");
} catch (ParseException e) {
throw new RuntimeException(e);
}
chronoUnitTest();
}
输出结果示例
完整代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.Date;
public class DateDifference {
public static void main(String[] args) {
try {
// 输出结果
System.out.println("日期时间差(以天为单位):" + getDaysDifference("2015-06-09 12:20:32") + "天");
} catch (ParseException e) {
throw new RuntimeException(e);
}
chronoUnitTest();
}
private static long getDaysDifference(String dateTime) throws ParseException {
//String dateTime = “2005-06-09 12:20:32”;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse(dateTime);
return getDaysDifference(date);
}
private static long getDaysDifference(Date dateTime){
Date date = new Date();
//当前时间
LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
//转化时间
LocalDateTime dateTime1 = LocalDateTime.ofInstant(dateTime.toInstant(), ZoneId.systemDefault());
// 计算日期时间差 localDateTime - dateTime1
long daysDifference = ChronoUnit.DAYS.between(dateTime1, localDateTime);
return daysDifference;
}
//ChronoUnit类用法
private static void chronoUnitTest(){
//当前时间
LocalDateTime today = LocalDateTime.now();
//2020-05-21 00:00:00:00
LocalDateTime birthDate = LocalDateTime.of(2020, 5, 21, 0, 0, 0, 0);
System.out.println("相差的年数: " + ChronoUnit.YEARS.between(birthDate,today));
System.out.println("相差的月数: " + ChronoUnit.MONTHS.between(birthDate,today));
System.out.println("相差的周数: " + ChronoUnit.WEEKS.between(birthDate,today));
System.out.println("相差的天数: " + ChronoUnit.DAYS.between(birthDate,today));
System.out.println("相差的时数: " + ChronoUnit.HOURS.between(birthDate, today));
System.out.println("相差的分数: " + ChronoUnit.MINUTES.between(birthDate, today));
System.out.println("相差的秒数: " + ChronoUnit.SECONDS.between(birthDate,today));
System.out.println("相差的毫秒数: " + ChronoUnit.MILLIS.between(birthDate,today));
System.out.println("相差的微秒数: " + ChronoUnit.MICROS.between(birthDate,today));
System.out.println("相差的纳秒数: " + ChronoUnit.NANOS.between(birthDate, today));
System.out.println("相差的半天数: " + ChronoUnit.HALF_DAYS.between(birthDate, today));
System.out.println("相差的十年数: " + ChronoUnit.DECADES.between(birthDate,today));
System.out.println("相差的世纪有年数: " + ChronoUnit.CENTURIES.between(birthDate,today));
System.out.println("相差的千年数: " + ChronoUnit.MILLENNIA.between(birthDate,today));
System.out.println("相差的纪元数: " + ChronoUnit.ERAS.between(birthDate,today));
}
}
谢谢观看!!!