gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:49:02 25 4
gpt4 key购买 nike

我有一个 java bean String month ,其中包含 "YYYYMM"值。

我想使用日历日期将该值与当月或上个月进行比较。我不知道该怎么做。

目前,在 DateBean bean 类我正在使用以下属性,例如:

private String month;

List<DateBean>这给了我"YYYYMM"格式值,例如 201906 .

我想将其与当前日历日期进行比较,以检查该月份是否为当前月份。

我怎样才能做到这一点?

最佳答案

您会在 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);
}

比较简单地使用YearMonthequals方法,例如:

    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 类的唯一目的是包装您的年份和月份字符串,那么您可能是用 YearMonth 完全替换它比包装一个 YearMonth 更好。

链接: Oracle tutorial: Date Time解释如何使用 java.time。

关于java - 我的 bean 中有一个字符串日期 yyyymm,想要与当前月份或上一个日历日期进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56782841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com