中国年历算法和程式
2008-01-05 18:31:40 来源:WEB开发网核心提示:中国年历算法和程式 本文摘自“和荣笔记 - 中国农历二百年算法及年历”中国公历算法中国公历算法不是太难,要害是星期值的确定,中国年历算法和程式,这里给出了简单算法: public static int dayOfWeek(int y, int m, int d) { int w = 1; // 公历一年一月一日是星期一
中国年历算法和程式
本文摘自“和荣笔记 - 中国农历二百年算法及年历”
中国公历算法
中国公历算法不是太难,要害是星期值的确定。这里给出了简单算法:
public static int dayOfWeek(int y, int m, int d)
{ int w = 1;
// 公历一年一月一日是星期一,所以起始值为星期日 y = (y-1)%400 + 1;
// 公历星期值分部 400 年循环一次 int ly = (y-1)/4;
// 闰年次数 ly = ly - (y-1)/100; ly = ly + (y-1)/400; int ry = y - 1 - ly;
// 常年次数 w = w + ry;
// 常年星期值增一 w = w + 2*ly;
// 闰年星期值增二 w = w + dayOfYear(y,m,d); w = (w-1)%7 + 1; return w; }
中国农历算法
根公历相比,中国农历的算法相当复杂。我在网上找的算法之中,eleworld.com 的算法是最好的一个。这个算法使用了大量的数据来确定农历月份和节气的分部,它仅实用于公历 1901 年到 2100 年之间的 200 年。
中国农历计算程式
跟据 eleworld.com 提供的算法,我写了下面这个程式: 以下是程序代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
中国二百年年历 1901 年至 2100 年
我用上面这个程式制作了二百年年历,1901 年至 2100 年,全部收录在这本书中。
年历格式说明:
农历日期列在公历日期后面。
节气用节气名称标明。
农历每月第一天用月份名称标明。
例如,2000 年一月的表达格式如下:
以下是程序代码
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
其中:
"1/25" - 表示公历 1 号和农历 25 号。
"立春" - 表示节气。
"腊月" - 表示农历 12 月第一天。
------
有关中国年历算法和程式的具体注解和二百年年历,请参考
“和荣笔记 - 中国农历二百年算法及年历”
- http://www.herongyang.com/year_gb/
更多精彩
赞助商链接