1 回答

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 的日期时间。
添加回答
举报