WEB开发网
开发学院WEB开发Jsp 阴阳历算法(转) 阅读

阴阳历算法(转)

 2008-01-05 08:32:09 来源:WEB开发网   
核心提示:程序为: /*西历农历转换程式 黄晓鸣 1995,7,25PRototype: int calconv( strUCt convdate * );struct convdate{int source; ==0 则输入日期为西历, !=0 则输入为农历int solaryear; 输出或输入之西历年份int solarm

程序为: 
/*

西历农历转换程式 黄晓鸣 1995,7,25

PRototype: int calconv( strUCt convdate * );

struct convdate
{
  int source; ==0 则输入日期为西历, !=0 则输入为农历
  int solaryear; 输出或输入之西历年份
  int solarmonth; 西历月
  int solardate; 西历日
  int lunaryear; 输出或输入之农历年份
  int lunarmonth; 农历月
  int lunardate; 农历日
  int weekday; 该日为星期几 ( 0==星期日, 1==星期一, ... )
  int kan; 该日天干 ( 0==甲, 1==乙, ..., 9==癸 )
  int chih; 该日地支 ( 0==子, 1==丑, ..., 11==亥 )
};

呼叫时须设定 souce 的值, 若为 0 则为西历转农历, 否则为农历转西历. 然後视
输入为西历或农历来设定西历或农历的年月日. 转换後的年月日会填入结构中( 农
历或西历 ), 以及该日为星期几, 天干地支.
若函式的返回值为 0 表示没有错误, 1 为输入之年份错误, 2 为输入之月份错误,
3 为输入之日期错误.
输入之西历年须在 1937 - 2031 间
输入之农历年须在 1936 - 2030 间
若须扩充, 则增加 lunarcal[]

*/

#define firstyear 1936 /* the first year in lunarcal[] */

struct convdate
{
  int source;
  int solaryear;
  int solarmonth;
  int solardate;
  int lunaryear;
  int lunarmonth;
  int lunardate;
  int weekday;
  int kan;
  int chih;
};

struct taglunarcal
{
  int basedays; /* 到西历 1 月 1 日到农历正月初一的累积日数 */
  int intercalation; /* 闰月月份. 0==此年没有闰月 */
  int baseweekday; /* 此年西历 1 月 1 日为星期几再减 1 */
  int basekanchih; /* 此年西历 1 月 1 日之干支序号减 1 */
  int monthdays[13]; /* 此农历年每月之大小, 0==小月(29日), 1==大月(30日)*/
};

struct taglunarcal lunarcal[] = {
, /* 1936 */
,
,
,
, /* 1940 */
,
,
,
, /* 1944 */

Tags:阴阳历 算法

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接