【Java日期时间】使用SimpleDateFormat和LocalDateTime(推荐)对两个日期做减法

使用SimpleDateFormat对两个日期做减法

1.背景

实际项目开发中,经常遇到对两个Date类型的时间进行相减,得到一个时间差,这个时间差的类型可能是"HH:mm:ss"、“dd HH:mm:ss”。

2.代码示例

        String start = "2010-2-2 01:01:01";
        String end = "2010-2-2 03:03:03";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("HH:mm:ss");
        // 设置时区不生效。 设置时区的目的在于纠正八小时时间差。
        //impleDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        //simpleDateFormat2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
        Date startTime = simpleDateFormat.parse(start);
        Date endTime = simpleDateFormat.parse(end);
        System.out.println(simpleDateFormat.format(startTime));

        long startTimeMills = startTime.getTime();
        long endTimeMills = endTime.getTime();
        long curTimeMills = System.currentTimeMillis();
        // 再减去八小时的毫秒数。
        Date date = new Date(endTimeMills - startTimeMills - 28800000L);
        String time = simpleDateFormat2.format(date);
        System.out.println(time);

使用LocalDateTime对两个日期做减法(推荐)-更优雅

String start = "2010-02-02 01:01:01";
        String end = "2010-02-02 03:03:03";

        LocalDateTime startDateTime = LocalDateTime.parse(start, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LocalDateTime endDateTime = LocalDateTime.parse(end, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

        Duration duration = Duration.between(startDateTime, endDateTime);
        System.out.println(LocalTime.ofNanoOfDay(duration.toNanos()).format(DateTimeFormatter.ofPattern("HH:mm:ss")));
  • 7
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@来杯咖啡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值