检查闰年的 Java 程序

位置:首页>文章>详情   分类:Java教程   阅读(319)   2023-06-26 07:54:18

学习使用不同的 Java 日期时间类来检查给定年份是否为闰年。

闰年是:

  • 除了世纪年份(以 00 结尾的年份)外,可以被 4 整除。
  • 只有能被 400 整除的世纪年。例如,2000 年是闰年。下一个世纪闰年将是 2400 年。

1. 使用 LocalDate 检查闰年

给定示例使用 LocalDate.isLeapYear()Year.isLeap() 方法来确定与给定实例关联的年份是否为闰年。我们可以使用 ZonedDateTime 调用类似的方法,LocalDateTime 类。

我们可以使用 now() 方法获取当前日期实例,这将有助于检查当前年份是否为闰年

LocalDate localDate = LocalDate.now();

boolean isLeapYear = localDate.isLeapYear();  //true or false

//or

boolean isLeapYear = Year.now().isLeap();

2. 检查闰年直到 Java 7

在遗留 Java API 中,处理日期和时间的主要类是 DateCalendarGregorianCalendar。要确定闰年,我们有两种方法:

  1. GregorianCalendar.isLeapYear(int year)
  2. 确定闰年的自定义方法

无论我们使用什么方法,我们都必须从任何给定的日期或日历实例中提取年份值,然后使用上述任何方法

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Main
{
    public static void main(String[] args)
    {
        // 1. Calendar
        Calendar cal = Calendar.getInstance();
        System.out.println( isLeapYear(cal.get(Calendar.YEAR)) );

        //2. Date
        Date date = new Date();
        System.out.println( isLeapYear(date.getYear()) );

        //3. GregorianCalendar
        GregorianCalendar gc = new GregorianCalendar();
        System.out.println( gc.isLeapYear(gc.get(GregorianCalendar.YEAR)) );
    }

    private static boolean isLeapYear(int year)
    {
        //1583 was the first year of the Gregorian Calendar
        assert year >= 1583; 

        return ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
    }
}

快乐学习!!

地址:https://www.cundage.com/article/check-leap-year.html