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));
    }

}

谢谢观看!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值