Java 处理LocalDate和Months名称

Java 处理LocalDate和Months名称,java,localdate,leap-year,Java,Localdate,Leap Year,我有一个.txt文件,我将它导入我的Java程序,例如2012.12.01。我对这个月很感兴趣,因为我从不使用getDayOfMonth.name;部分,即使如此,它写的是名字,而不是数字一月,而不是01或1。所以我试着确定这个月是不是二月。但即使它是真的,if也会返回false。 也许是因为月份永远不等于字符串 for (Changes c : list) { int Year = v.getDate().getYear(); M

我有一个.txt文件,我将它导入我的Java程序,例如2012.12.01。我对这个月很感兴趣,因为我从不使用getDayOfMonth.name;部分,即使如此,它写的是名字,而不是数字一月,而不是01或1。所以我试着确定这个月是不是二月。但即使它是真的,if也会返回false。 也许是因为月份永远不等于字符串

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)
二月是一个字符串文字,而月是一个月实例,这使它们无法比较

有,所以你的病情可以降到

if (v.getDate().isLeapYear()) {
    // handle a leap year
}
应该是

Month.FEBRUARY.equals(month)
二月是一个字符串文字,而月是一个月实例,这使它们无法比较

有,所以你的病情可以降到

if (v.getDate().isLeapYear()) {
    // handle a leap year
}
我猜是因为月份永远不等于字符串

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值与Month.二月进行比较,也可以只检查getMonthValue返回的值。但请注意,您的月日部分目前是错误的,并且您的年检在可被100整除的年份中是错误的。幸运的是,你不需要知道这一部分——无论如何,日期只能是闰年的2月29日。我会使用:

LocalDate date = v.getDate();
if (date.getMonthValue() == 2 && date.getDayOfMonth() == 29) {
    // Leap day handling
}
我猜是因为月份永远不等于字符串

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值与Month.二月进行比较,也可以只检查getMonthValue返回的值。但请注意,您的月日部分目前是错误的,并且您的年检在可被100整除的年份中是错误的。幸运的是,你不需要知道这一部分——无论如何,日期只能是闰年的2月29日。我会使用:

LocalDate date = v.getDate();
if (date.getMonthValue() == 2 && date.getDayOfMonth() == 29) {
    // Leap day handling
}