Java之时间减法

这里我们主要用 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));
    }

}

谢谢观看!!!

要计算两个Java时间相减并得到天数,可以按照以下步骤进行操作: 1. 首先,定义两个Java日期对象,表示待相减的两个时间点,例如:`Date date1` 和 `Date date2`。 2. 接下来,通过 `getTime()` 方法获取两个日期对象的时间戳(以毫秒为单位),分别得到 `long time1 = date1.getTime()` 和 `long time2 = date2.getTime()`。 3. 然后,计算两个时间戳的差值 `long diff = time2 - time1`,得到的值表示两个时间点之间的毫秒差。 4. 将毫秒数转换为天数。由于一天有 24 小时、60 分钟、60 秒、1000 毫秒,所以可以使用如下计算方式将毫秒差转换为天数:`long days = diff / (24 * 60 * 60 * 1000)`。 5. 最后,`days` 的值就是两个时间点相差的天数。 完整的代码示例如下所示: ```java import java.util.Date; public class CalculateDays { public static void main(String[] args) { // 定义待相减的两个时间点 Date date1 = new Date(); Date date2 = new Date(System.currentTimeMillis() + (1000 * 60 * 60 * 24 * 7)); // 假设相差一周 // 获取时间戳 long time1 = date1.getTime(); long time2 = date2.getTime(); // 计算毫秒差 long diff = time2 - time1; // 转换为天数 long days = diff / (24 * 60 * 60 * 1000); // 输出结果 System.out.println("相差的天数为:" + days); } } ``` 以上代码中,通过获取当前时间 `date1` 和一周后的时间 `date2`,计算它们之间的天数差,并输出结果。根据实际需求,可以调整待相减时间点和输出的格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值