冬至计算机算法(Java)
做节日相关消息推送的时候,碰到个不固定日期的节气:冬至。
在网上搜索了很多文章都没能找到对应的计算算法,后面好不容易找到了计算公式,特此记录相关代码。
/**
* 冬至日计算机算法:支持1700 ~ 3100年的日期计算
* */
public static void main(String[] args) {
for (int year=2000; year < 2100; year++) {
if (year == 2767) {
System.out.println("23");
}
if (year == 2227||year == 3068) {
System.out.println("22");
}
if (year < 1700) {
throw new RuntimeException("1700年以前暂时不支持");
}
if (year >= 3100) {
throw new RuntimeException("3100年以后暂时不支持");
}
double[] coefficient = { 22.11, 22.39, 22.66, 21.90, 22.18, 22.472, 22.72, 21.995, 22.27, 22.51, 22.75, 22.02, 22.27, 22.519,
22.80 };
int mod = year % 100;
System.out.println(year + "年冬至是12月" + (int)(mod * 0.2422 + coefficient[year / 100 - 17] - mod / 4) + "号");
}
}
有帮助到您的请点个赞~