分数太少了,呵呵,呵呵
另外的农历,是更好地做
用的printf打印功能目录,切换来完成调用子函数很多次了,再加上大循环
日历显示,这是相对简单的,是计算的一年的第一天是星期可以
原则:第1年1月1日(星期一),计算这天的第一天,年1月1日,1的AD,除以7的中间的,其余的是周。一年365天,364正好是7的倍数,那么一年更比一天,闰年加一天。还有一个更简单,仅有400年是一个轮回,400 +97 = 497多
您输入的一年,除以400,计算,然后在今年剩下的天数计算量会小很多
所以在今年的第一天是星期计算
最好做的一个子功能来实现这一功能,返回值是今年的几个星期的第一天,后者可用于
下一个打印子功能是一个不错的选择,
设置一个全局数组包含该月的天数来确定一个,如果在2月的天数 BR />这里有一个技巧,就是设定一个变量来保存每月的最后一天,一周,因为它是连续的,所以在下个月的第一天是星期几被很好地定义,是打印几个空格发生这个变量的值,哦
日期星期有几个还不错的事,知道在今年的第一天,然后是一周的第一天的日期,今年的差一些美好的一天,使用for循环,可以计算出
农历这做的不好,你可以看看百度,一种子功能,您可以参考 a>
后面两个函数,读取和写入文件,很简单,套用固定格式的文件可以变化不大,
农历和阳历19年是一致的。 (有时可能会相差一两天,这将是大致一致的。)
准确的日历,你可以尝试一下中国的日历。访问互联网,可以查询。
网址查看个人档案
关于中国农历的是为您提供数千年前在日历查询,可以查询阳历和中国农历日期,节气的向上和向下各种节日的日历内容。农历节气,太阳和月亮新月(第一批)和200年的范围内精度在几秒钟内,向前(尽可能公元5000年),精度几分钟。
节气,太阳和月亮月亮在精确的时间可能发生在午夜时分,所以如果日历的精确度不高,误差过大,然后计算出的实际日期可能会糟糕的一天,例如:在2008年1月21日大寒0:43,计算的误差将是1月20日误做的大寒。提供准确的关于中国农历的日历查询是一个非常高的精度。
//====================================== 返回农历 y年的总天数
function lYearDays(y) {
var i, sum = 348;
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
return(sum+leapDays(y));
}
//====================================== 返回农历 y年闰月的天数
function leapDays(y) {
if(leapMonth(y)) return( (lunarInfo[y-1899]&0xf)==0xf? 30: 29);
else return(0);
}
//====================================== 返回农历 y年闰哪个月 1-12 , 没闰返回 0
function leapMonth(y) {
var lm = lunarInfo[y-1900] & 0xf;
return(lm==0xf?0:lm);
}
//====================================== 返回农历 y年m月的总天数
function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
}
//====================================== 算出农历, 传入日期控件, 返回农历日期控件
// 该控件属性有 .year .month .day .isLeap
function Lunar(objDate) {
var i, leap=0, temp=0;
var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;
for(i=1900; i<2100 && offset>0; i++) { temp=lYearDays(i); offset-=temp; }
if(offset<0) { offset+=temp; i--; }
this.year = i;
leap = leapMonth(i); //闰哪个月
this.isLeap = false;
for(i=1; i<13 && offset>0; i++) {
//闰月
if(leap>0 && i==(leap+1) && this.isLeap==false)
{ --i; this.isLeap = true; temp = leapDays(this.year); }
else
{ temp = monthDays(this.year, i); }
//解除闰月
if(this.isLeap==true && i==(leap+1)) this.isLeap = false;
offset -= temp;
}
if(offset==0 && leap>0 && i==leap+1)
if(this.isLeap)
{ this.isLeap = false; }
else
{ this.isLeap = true; --i; }
if(offset<0){ offset += temp; --i; }
this.month = i;
this.day = offset + 1;
}
//==============================返回公历 y年某m+1月的天数
function solarDays(y,m) {
if(m==1)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
else
return(solarMonth[m]);
}
//============================== 传入 offset 返回干支, 0=甲子
function cyclical(num) {
return(Gan[num%10]+Zhi[num%12]);
}
//============================== 阴历属性
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
this.isToday = false;
//瓣句
this.sYear = sYear; //公元年4位数字
this.sMonth = sMonth; //公元月数字
this.sDay = sDay; //公元日数字
this.week = week; //星期, 1个中文
//农历
this.lYear = lYear; //公元年4位数字
this.lMonth = lMonth; //农历月数字
this.lDay = lDay; //农历日数字
this.isLeap = isLeap; //是否为农历闰月?
//八字
this.cYear = cYear; //年柱, 2个中文
this.cMonth = cMonth; //月柱, 2个中文
this.cDay = cDay; //日柱, 2个中文
this.color = '';
this.lunarFestival = ''; //农历节日
this.solarFestival = ''; //公历节日
this.solarTerms = ''; //节气
}