import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
/**
* @Author ds
*/
public class DateTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 定义两个时间 Date
Date startTime = sdf.parse("2022-01-01 01:01:01");
Date endTime = sdf.parse("2022-01-02 01:01:01");
// 将两个时间转化为 LocalDateTime
LocalDateTime startLocalDateTime = dateToLocalDateTime(startTime);
LocalDateTime endLocalDateTime = dateToLocalDateTime(endTime);
// LocalDateTime 实现了 Temporal接口;
// Duration.between(Temporal startTime , Temporal endTime)
// 如果第一个参数>第二个参数,那么控制台输出会得到负数;
Duration duration = Duration.between(startLocalDateTime , endLocalDateTime);
System.out.println("两个时间差的 天数 : " + duration.toDays());
System.out.println("两个时间差的 小时 : " + duration.toHours());
System.out.println("两个时间差的 分钟 : " + duration.toMinutes());
System.out.println("两个时间差的 毫秒 : " + duration.toMillis());
System.out.println("两个时间差的 纳秒 : "+duration.toNanos());
}
/**
* 将Date 转化为 LocalDateTime
* @param date
* @return
*/
public static LocalDateTime dateToLocalDateTime(Date date){
return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
}
#控制台输出:
两个时间差的 天数 : 1
两个时间差的 小时 : 24
两个时间差的 分钟 : 1440
两个时间差的 毫秒 : 86400000
两个时间差的 纳秒 : 86400000000000
网友评论