登录模块加载中...
会员投稿 投稿指南 今天是:
打印本页 | 关闭窗口 | 双击滚屏 您的位置首页>>网页制作学习园地>>HTML教程>>Jav基础>>实用:公历转农历 代码
实用:公历转农历 代码
来源:建站学 ‖ 作者: ‖ 点击: ‖ 时间:11-01-07 11:17:20 ‖ 【 】‖ 我要投稿
illi * 60;
 var DyMilli = HrMilli * 24;
 
 // 从2001年1月1日算起,给定的公历日期已经过去的天数
 // 11323是1970年1月1日到2001年1月1日之间的天数,因为Date是从1970年1月1日作为起点的
 var iSpanDays = Math.round(SolarDate.getTime() / DyMilli) - 11323;
 
 // 公历2001年1月24日为农历2001年正月初一,差23天
 if (iSpanDays < 23)
 {
 iYear = 2000;
 iLunarMonth = 12;
 iLunarDay = iSpanDays + 7;
 }
 else
 {
 // 从农历2001年正月初一算起 
 iSpanDays = iSpanDays - 23;
 iLunarYear = 2001;
 iLunarMonth = 1;
 iLunarDay = 1;
 
 // 计算农历年 
 tmp = LunarYearDays(iLunarYear);
 while (iSpanDays >= tmp)
 {
 iSpanDays -= tmp;
 iLunarYear++;
 tmp = LunarYearDays(iLunarYear);
 }
 
 // 计算农历月 
 tmp = LunarMonthDays(iLunarYear, iLunarMonth) & 0xffff; //取低字
 while (iSpanDays >= tmp)
 {
 iSpanDays -= tmp;
 if (iLunarMonth == GetLeapMonth(iLunarYear)) // 该年该月闰月
 {
 tmp = LunarMonthDays(iLunarYear, iLunarMonth) >> 16; //取高字
 if (iSpanDays < tmp)
 {
 Leap = (tmp > 0) ? true : false; // 闰月的后个月?
 break;
 }
 iSpanDays = iSpanDays - tmp;
 }
 
 iLunarMonth++;
 tmp = LunarMonthDays(iLunarYear,iLunarMonth) & 0xffff; //取低字
 }
 
 // 计算农历日 
 iLunarDay += iSpanDays;
 }
 
 return FormatLunarYear(iLunarYear) + (Leap ? "闰" : "") + FormatLunarMonth(iLunarMonth) + FormatLunarDay(iLunarDay);
}

调用方法举例如下:

var today= new Date(); // 今天是2004-3-5
var str = GetLunarDateString(today);

结果是 “甲申年二月十五”。

再举两个例子:

var date1 = new Date(2008, 9, 1); // 2008-10-1
var date2 = new Date(2050, 4, 18); // 2050-5-18
var str1 = GetLunarDateString(date1);
var str2 = GetLunarDateString(date2);

结果分别是 “戊子年九月初三” 和 “庚午年闰三月廿八”。

注意在Date中,月的范围是0-11。
|<< << < 1 2 3 > >> >>|
加入收藏:  加入收藏夹  | 发送给好友:  发送给好友
责任编辑:admin
相关文章列表
请文明参与讨论,禁止漫骂攻击。  
网友评论