TA的每日心情 | 无聊 2024-9-27 10:07 |
---|
签到天数: 62 天 连续签到: 1 天 [LV.6]测试旅长
|
清明节在公历中的日期是不固定的。
统计了近1000年的日历(1700-3100),发现
最早的清明节是2896年,其交节时间为 2896-04-03 20:21:51
最晚的清明节是1903年,其交节时间为 1903-04-06 07:25:53,
那么每年的清明节究竟如何计算呢?
代码如下:
- /**
- * 计算清明节的日期(可计算范围: 1700-3100)
- *
- * @param year
- * 需要计算的年份
- * @return 清明节在公历中的日期
- */
- public static int qing(int year) {
- if (year == 2232) {
- return 4;
- }
- if (year < 1700) {
- throw new RuntimeException("1700年以前暂时不支持");
- }
- if (year >= 3100) {
- throw new RuntimeException("3100年以后暂时不支持");
- }
- double[] coefficient = { 5.15, 5.37, 5.59, 4.82, 5.02, 5.26, 5.48, 4.70, 4.92, 5.135, 5.36, 4.60, 4.81, 5.04,
- 5.26 };
- int mod = year % 100;
- return (int) (mod * 0.2422 + coefficient[year / 100 - 17] - mod / 4);
- }
复制代码
|
|