我有一个.txt文件,我将其导入到Java程序中,例如("2012.12.01")
。我得到一个月(有趣的是,因为我从未使用过getDayOfMonth().name();
部分,所以它写的是名称而不是数字({JANUARY
而不是01
或1
)因此,我试图确定月份是否为2月,但是即使是真实的月份,if
也会返回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;
}
答案 0 :(得分:3)
应该是
Month.FEBRUARY.equals(month)
"FEBRUARY"
是String
的文字,而month
是Month
的实例,这使它们无与伦比。
有LocalDate#isLeapYear
,因此您的情况可以减少为
if (v.getDate().isLeapYear()) {
// handle a leap year
}
答案 1 :(得分:1)
我想是因为月份永远不等于字符串。
是的。您可以将Month
的值与Month.FEBRUARY
进行比较,也可以只检查getMonthValue
返回的值。请注意,您当前的月份部分当前是错误的-并且您的年份检查对于以100整除的年份来说是不正确的。幸运的是,您不需要知道该部分-日期可以 only 无论如何,年的2月29日。我会用:
LocalDate date = v.getDate();
if (date.getMonthValue() == 2 && date.getDayOfMonth() == 29) {
// Leap day handling
}