处理 LocalDate 和 Months 名称
Dealing with LocalDate and Months names
我有一个 .txt 文件,我将其导入到我的 Java 程序中,例如 ("2012.12.01")
。我得到了月份(有趣的是,因为我从不使用 getDayOfMonth().name();
部分,即使这样它也写了名字,而不是数字(JANUARY
而不是 01
或 1
) . 所以我试图确定这个月份是否是二月。但即使它是真的,if
returns false
。
可能是因为月份永远不等于 String。
for (Changes c : list) {
int Year = v.getDate().getYear();
Month month= v.getDate().getMonth();
int Day = v.getDate().getDayOfMonth();
if (Year%4==0 && month.equals("FEBRUARY") && Day==24)
leapDay = true;
}
应该是
Month.FEBRUARY.equals(month)
"FEBRUARY"
是一个 String
字面值,month
是一个 Month
实例,这使得它们无法比较。
有LocalDate#isLeapYear
,所以你的条件可以降为
if (v.getDate().isLeapYear()) {
// handle a leap year
}
I guess because the Month never equal to String.
是的,没错。您可以将 Month
值与 Month.FEBRUARY
进行比较,或者只检查 getMonthValue
返回的值。请注意,您的日期部分目前是错误的 - 并且您的年份检查对于被 100 整除的年份不正确。幸运的是,您不需要知道该部分 - 日期可以 仅 无论如何是闰年的 2 月 29 日。我会使用:
LocalDate date = v.getDate();
if (date.getMonthValue() == 2 && date.getDayOfMonth() == 29) {
// Leap day handling
}
我有一个 .txt 文件,我将其导入到我的 Java 程序中,例如 ("2012.12.01")
。我得到了月份(有趣的是,因为我从不使用 getDayOfMonth().name();
部分,即使这样它也写了名字,而不是数字(JANUARY
而不是 01
或 1
) . 所以我试图确定这个月份是否是二月。但即使它是真的,if
returns false
。
可能是因为月份永远不等于 String。
for (Changes c : list) {
int Year = v.getDate().getYear();
Month month= v.getDate().getMonth();
int Day = v.getDate().getDayOfMonth();
if (Year%4==0 && month.equals("FEBRUARY") && Day==24)
leapDay = true;
}
应该是
Month.FEBRUARY.equals(month)
"FEBRUARY"
是一个 String
字面值,month
是一个 Month
实例,这使得它们无法比较。
有LocalDate#isLeapYear
,所以你的条件可以降为
if (v.getDate().isLeapYear()) {
// handle a leap year
}
I guess because the Month never equal to String.
是的,没错。您可以将 Month
值与 Month.FEBRUARY
进行比较,或者只检查 getMonthValue
返回的值。请注意,您的日期部分目前是错误的 - 并且您的年份检查对于被 100 整除的年份不正确。幸运的是,您不需要知道该部分 - 日期可以 仅 无论如何是闰年的 2 月 29 日。我会使用:
LocalDate date = v.getDate();
if (date.getMonthValue() == 2 && date.getDayOfMonth() == 29) {
// Leap day handling
}