美文网首页
通过 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