计算date/string之间的时间差,将string时间直接转为date计算/天/时/分/秒

string转为date

// 2023-11-24 16:50:00 这里的时间自定义可修改
Date date= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-11-24 16:50:00");

一、获取大的时间,也就是最靠后的时间

//1.大时间  2023-11-24 05:00:00  可自定义
Date bigDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-11-24 05:00:00");
        

//2.大时间  获取现在的时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date bigDate=df.parse(df.format(new Date()));

二、获取小的时间,也就是靠前的时间

//小时间  2023-11-24 16:50:00时间自定义
Date littleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-11-24 16:50:00");

三、利用该工具类计算


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间差工具类(date日期类型直接计算 或者string类型日期转date类型日期计算)
 *
 * @author 假客套
 */
public class TimeDifferenceUtils {

    public static void main(String[] args) throws ParseException {


        //计算date类型时间差
        //大时间  现在的时间
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date bigDate = df.parse(df.format(new Date()));
        //小时间
        Date littleDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2023-11-23 16:50:00");
        System.out.println(getDateDifference(bigDate, littleDate));

        //分割线
        System.out.println("================================================");

        //计算String类型时间差
        //大时间
        String bigDate2 = "2023-11-23 16:50:00";
        //小时间
        String littleDate2 = "2023-11-23 16:50:00";
        System.out.println(getStringDifference(bigDate2, littleDate2));
    }


    /**
     * 计算date时间类型时间差
     *
     * @param bigDate    大时间
     * @param littleDate 小时间
     * @return
     */
    public static String getDateDifference(Date bigDate, Date littleDate) {
        //天
        long day = 1000 * 24 * 60 * 60;
        //时
        long hour = 1000 * 60 * 60;
        //分
        long minute = 1000 * 60;
        //秒
        long second = 1000;

        // 获得两个时间的毫秒时间差异
        long time = bigDate.getTime() - littleDate.getTime();

        // 计算差多少天
        long difference_day = time / day;
        // 计算差多少小时
        long difference_hour = time % day / hour;
        // 计算差多少分钟
        long difference_minute = time % day % hour / minute;
        // 计算差多少秒//输出结果
        long difference_second = time % day % hour % minute / second;

        // n天n小时n分钟n秒
        return difference_day + "天" + difference_hour + "小时" + difference_minute + "分钟" + difference_second + "秒";

    }


    /**
     * 计算String时间类型时间差,先转换date行再复用上方的date计算方法
     *
     * @param bigDate    大时间
     * @param littleDate 小时间
     * @return
     */
    public static String getStringDifference(String bigDate, String littleDate) throws ParseException {
        //String转Date
        //大时间
        Date bigDate2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(bigDate);

        //小时间
        Date littleDate2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(littleDate);

        //直接复用date计算方法
        return getDateDifference(bigDate2, littleDate2);

    }
}

  • 12
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

假客套

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

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

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

打赏作者

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

抵扣说明:

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

余额充值