当前位置: 代码网 > it编程>编程语言>Java > JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

2025年12月11日 Java 我要评论
java calendar设置上个月时,日期不存在或错误提示java进行日期计算时上个月日期一般使用: calendar.set(calendar.month, calendar.get(calend

java calendar设置上个月时,日期不存在或错误提示

java进行日期计算时

上个月日期一般使用:

 calendar.set(calendar.month, calendar.get(calendar.month) - 1); // 设置为上一个月

进行,操作,但是当月份不存在、日期不存在如:4.31 2.31 不存在的日期时,处理就容易出现问题,此处仅提供思路可以按照自己显示。

calendar calendar = calendar.getinstance();
calendar.settime(date); // 设置为当前时间

如果出现不存在的日期会自动按照日期数进行推算

如4.31会自动生成5.1 2.31会自动生成3.3号,并不是所有的都顺延到下个月1号。

知道这里就知道该怎么办了

/**
     * 获取上个月的今天
     * @param time
     * @return
     */
    public static string getpreviousmonth(string time,string simpledateformat) {
        try {
            if(stringutils.isblank(time)){
                return "";
            }
            simpledateformat simpledateformat = new simpledateformat(simpledateformat);//注意月份是mm
            date date = simpledateformat.parse(time);
            calendar calendar = calendar.getinstance();
            calendar.settime(date); // 设置为当前时间
            if(!time.equals(simpledateformat.format(date))){//如果当前日期不存在,系统会自动往后推。需要重置为1号
                calendar.set(calendar.date, 1); //
            }
            int oldmonth = calendar.get(calendar.month);
            calendar.set(calendar.month, calendar.get(calendar.month) - 1); // 设置为上一个月
            int newmonth = calendar.get(calendar.month);
            if(oldmonth == newmonth){
                calendar.set(calendar.date, 1);
            }
            if(!time.equals(simpledateformat.format(date))){//判断如果是当前日期不存在,需要往前推一天(如11.31应该返回10.31)
                calendar.set(calendar.date, calendar.get(calendar.date) - 1); // 设置为上一个天
                calendar.gettime();
                int day = integer.parseint(stringutils.substring(time, stringutils.lastindexof(time, "-") + 1, time.length()));
                calendar.set(calendar.date, day);
            }
            date = calendar.gettime();
            return simpledateformat.format(date);
        } catch (parseexception e) {
            e.printstacktrace();
            return null;
        }
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com