复活节_java

import java.time.LocalDate;
public class Easter {
    public static void main(String[] args) {
        int year = 2008;
        LocalDate easterDate = calculateEasterDate(year);
        System.out.println("复活节日期:" + easterDate);
    }

    public static LocalDate calculateEasterDate(int year) {
        int goldenNumber = (year % 19) + 1;
        int century = year / 100 + 1;
        int skippedLeapYears = (3 * century / 4) - 12;
        int correctionFactor = ((8 * century + 5) / 25) - 5;
        int sundayIndex = (5 * year / 4) - skippedLeapYears - 10;
        int epact = (11 * goldenNumber + 20 + correctionFactor - skippedLeapYears) % 30;

        if ((epact == 25 && goldenNumber > 11) || epact == 24) {
            epact++;
        }

        int day = 44 - epact;
        if (day < 21) {
            day += 30;
        }

        day += 7 - ((sundayIndex + day) % 7);

        if (day > 31) {
            return LocalDate.of(year, 4, day - 31);
        } else {
            return LocalDate.of(year, 3, day);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值