为了账号安全,请及时绑定邮箱和手机立即绑定

我的 bean 中有一个字符串日期 yyyymm,想与当前月份或上一个日历日期进行比较

我的 bean 中有一个字符串日期 yyyymm,想与当前月份或上一个日历日期进行比较

手掌心 2023-02-23 15:45:06
我有一个带有 的 java bean String month,它有一个"YYYYMM"值。我想使用日历日期将该值与当前月份或上个月进行比较。我不知道该怎么做。目前,在DateBeanbean 类中,我使用如下属性:private String month;在List<DateBean>这给了我"YYYYMM"格式值,例如201906。我想将它与当前日历日期进行比较,以检查月份是否为当前月份。我怎样才能做到这一点?
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您会在 bean 的字符串中保留一个整数值吗?浮点值?你当然不会。那为什么是一个月的价值呢?你当然也不会那样做。你要:


private YearMonth month;

该类YearMonth是现代 Java 日期和时间 API java.time 的一部分。当您的程序接受日期和时间数据作为字符串时,将其解析为适当的日期时间类型。你可能会发现有一个构造函数很方便,例如:


private static final DateTimeFormatter monthFormatter = DateTimeFormatter.ofPattern("uuuuMM");


public DateBean(String month) {

    this.month = YearMonth.parse(month, monthFormatter);

}

比较简单的使用equals的方法YearMonth,例如:


    List<DateBean> dateBeans

            = List.of(new DateBean("201901"), new DateBean("201906"));

    YearMonth currentMonth = YearMonth.now(ZoneId.of("Europe/Sofia"));

    for (DateBean bean : dateBeans) {

        if (bean.getMonth().equals(currentMonth)) {

            System.out.println("" + bean.getMonth() + " is current month");

        } else {

            System.out.println("" + bean.getMonth() + " is not current month");

        }

    }

输出是:


2019-01 is not current month

2019-06 is current month

由于新月份并非在所有时区的同一时间点开始,我建议您将所需的时区传递给YearMonth.now()。


编辑: Basil Bourque 在他的评论中可能有一个很好的观点:如果你的课程的唯一目的DateBean是包装你的年份和月份字符串,你可能最好用完全替换它而不是包装一个.YearMonthYearMonth


链接: Oracle 教程:解释如何使用 java.time 的日期时间。


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号