Java中对日期常见的操作实现

本文介绍了一个用于日期操作的实用函数集合,包括日期比较、年龄计算和时间差对比。通过具体示例展示了如何使用这些函数来解决实际问题,如判断两个日期的先后、计算年龄以及比较传入时间和当前时间的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


    /*
     * 现在日期和查询日期先后比较
     * month  输入以现在为基准,往前推的n个月
     *
     */
    public static boolean DateCompa(Integer month, Date orgQueryDate) {

        Date nowDate = new Date();
        Calendar c = Calendar.getInstance();
        c.setTime(nowDate);
        c.add(Calendar.MONTH, month);//过去n个月
        Date time = c.getTime(); //得到加工后的日期

        //日期中越大越后
        if (orgQueryDate.before(time)) {
            return false;
        } else {
            return true;
        }


    }




    /*
     * 传入两日期计算年龄
     * eg 2018/12/13-1995/12/14 22岁 2018/12/15-1995/12/14 23岁 就算差一天也是小一岁
     *
     */
    public static int getAge() {

        LocalDate date1 = LocalDate.of(2018, 12, 13);
        LocalDate date2 = LocalDate.of(1995, 12, 14);
        int age = date2.until(date1).getYears();

        return age;

    }




    /*
     * 对比传入时间与当前时间差别 para 时间 para 类型 按30天一个月计算
     *
     * @throws Exception
     */

    public static Double compareTime(String time, String type) throws Exception {

        Date curDate = new Date();
        String curDateS = "";
        SimpleDateFormat df = new SimpleDateFormat("yyyy.MM.dd");
        curDateS = df.format(curDate);
        curDate = df.parse(curDateS);

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
        Date date = sdf.parse(time);
        long baseT = 1;
        if (type.equals("s")) {  //秒
            baseT = 1000;
        } else if (type.equals("m")) {  //分
            baseT = 1000 * 60;
        } else if (type.equals("h")) {  //小时
            baseT = 1000 * 3600;
        } else if (type.equals("dd")) { //天
            baseT = 1000 * 3600 * 24;
        } else if (type.equals("mm")) { //月
            baseT = 1000 * 3600 * 24 * 30l;
        } else if (type.equals("yy")) { //年
            baseT = 1000 * 3600 * 24 * 30l * 12l;
        }

        Double result = (Double) (((curDate.getTime() + 0.00) - (date.getTime() + 0.00)) / (baseT));
        return result;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值