美文网首页
通过 LocalDateTime 比较Date时间

通过 LocalDateTime 比较Date时间

作者: 一介书生独醉江湖 | 来源:发表于2022-06-12 09:08 被阅读0次

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

相关文章

网友评论

      本文标题:通过 LocalDateTime 比较Date时间

      本文链接:https://www.haomeiwen.com/subject/jsmbmrtx.html