first commit
This commit is contained in:
195
WebRoot/JS/lunarCalendar.js
Normal file
195
WebRoot/JS/lunarCalendar.js
Normal file
@ -0,0 +1,195 @@
|
||||
//农历
|
||||
var CalendarData=new Array(100);
|
||||
var madd=new Array(12);
|
||||
var tgString="甲乙丙丁戊己庚辛壬癸";
|
||||
var dzString="子丑寅卯辰巳午未申酉戌亥";
|
||||
var numString="一二三四五六七八九十";
|
||||
var monString="正二三四五六七八九十冬腊";
|
||||
var weekString="日一二三四五六";
|
||||
var sx="鼠牛虎兔龙蛇马羊猴鸡狗猪";
|
||||
var cYear,cMonth,cDay,TheDate;
|
||||
CalendarData = new Array(
|
||||
0xa4b,
|
||||
0x5164b,
|
||||
0x6a5,
|
||||
0x6d4,
|
||||
0x415b5,
|
||||
0x2b6,
|
||||
0x957,
|
||||
0x2092f,
|
||||
0x497,
|
||||
0x60c96,
|
||||
0xd4a,
|
||||
0xea5,
|
||||
0x50da9,
|
||||
0x5ad,
|
||||
0x2b6,
|
||||
0x3126e,
|
||||
0x92e,
|
||||
0x7192d,
|
||||
0xc95,
|
||||
0xd4a,
|
||||
0x61b4a,
|
||||
0xb55,
|
||||
0x56a,
|
||||
0x4155b,
|
||||
0x25d,
|
||||
0x92d,
|
||||
0x2192b,
|
||||
0xa95,
|
||||
0x71695,
|
||||
0x6ca,
|
||||
0xb55,
|
||||
0x50ab5,
|
||||
0x4da,
|
||||
0xa5b,
|
||||
0x30a57,
|
||||
0x52b,
|
||||
0x8152a,
|
||||
0xe95,
|
||||
0x6aa,
|
||||
0x615aa,
|
||||
0xab5,
|
||||
0x4b6,
|
||||
0x414ae,
|
||||
0xa57,
|
||||
0x526,
|
||||
0x31d26,
|
||||
0xd95,
|
||||
0x70b55,
|
||||
0x56a,
|
||||
0x96d,
|
||||
0x5095d,
|
||||
0x4ad,
|
||||
0xa4d,
|
||||
0x41a4d,
|
||||
0xd25,
|
||||
0x81aa5,
|
||||
0xb54,
|
||||
0xb6a,
|
||||
0x612da,
|
||||
0x95b,
|
||||
0x49b,
|
||||
0x41497,
|
||||
0xa4b,
|
||||
0xa164b,
|
||||
0x6a5,
|
||||
0x6d4,
|
||||
0x615b4,
|
||||
0xab6,
|
||||
0x957,
|
||||
0x5092f,
|
||||
0x497,
|
||||
0x64b,
|
||||
0x30d4a,
|
||||
0xea5,
|
||||
0x80d65,
|
||||
0x5ac,
|
||||
0xab6,
|
||||
0x5126d,
|
||||
0x92e,
|
||||
0xc96,
|
||||
0x41a95,
|
||||
0xd4a,
|
||||
0xda5,
|
||||
0x20b55,
|
||||
0x56a,
|
||||
0x7155b,
|
||||
0x25d,
|
||||
0x92d,
|
||||
0x5192b,
|
||||
0xa95,
|
||||
0xb4a,
|
||||
0x416aa,
|
||||
0xad5,
|
||||
0x90ab5,
|
||||
0x4ba,
|
||||
0xa5b,
|
||||
0x60a57,
|
||||
0x52b,
|
||||
0xa93,
|
||||
0x40e95
|
||||
);
|
||||
madd[0]=0;
|
||||
madd[1]=31;
|
||||
madd[2]=59;
|
||||
madd[3]=90;
|
||||
madd[4]=120;
|
||||
madd[5]=151;
|
||||
madd[6]=181;
|
||||
madd[7]=212;
|
||||
madd[8]=243;
|
||||
madd[9]=273;
|
||||
madd[10]=304;
|
||||
madd[11]=334;
|
||||
|
||||
function GetBit(m,n){
|
||||
return (m>>n)&1;
|
||||
}
|
||||
function e2c(){
|
||||
TheDate= (arguments.length!=3) ? new Date() : new Date(arguments[0],arguments[1],arguments[2]);
|
||||
var total,m,n,k;
|
||||
var isEnd=false;
|
||||
var tmp=TheDate.getYear();
|
||||
if(tmp<1900){
|
||||
tmp+=1900;
|
||||
}
|
||||
total=(tmp-1921)*365+Math.floor((tmp-1921)/4)+madd[TheDate.getMonth()]+TheDate.getDate()-38;
|
||||
|
||||
if(TheDate.getYear()%4==0&&TheDate.getMonth()>1) {
|
||||
total++;
|
||||
}
|
||||
for(m=0;;m++){
|
||||
k=(CalendarData[m]<0xfff)?11:12;
|
||||
for(n=k;n>=0;n--){
|
||||
if(total<=29+GetBit(CalendarData[m],n)){
|
||||
isEnd=true; break;
|
||||
}
|
||||
total=total-29-GetBit(CalendarData[m],n);
|
||||
}
|
||||
if(isEnd) break;
|
||||
}
|
||||
cYear=1921 + m;
|
||||
cMonth=k-n+1;
|
||||
cDay=total;
|
||||
if(k==12){
|
||||
if(cMonth==Math.floor(CalendarData[m]/0x10000)+1){
|
||||
cMonth=1-cMonth;
|
||||
}
|
||||
if(cMonth>Math.floor(CalendarData[m]/0x10000)+1){
|
||||
cMonth--;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function GetcDateString(){
|
||||
var tmp="";
|
||||
tmp+=tgString.charAt((cYear-4)%10);
|
||||
tmp+=dzString.charAt((cYear-4)%12);
|
||||
tmp+="(";
|
||||
tmp+=sx.charAt((cYear-4)%12);
|
||||
tmp+=")年 ";
|
||||
if(cMonth<1){
|
||||
tmp+="(闰)";
|
||||
tmp+=monString.charAt(-cMonth-1);
|
||||
}else{
|
||||
tmp+=monString.charAt(cMonth-1);
|
||||
}
|
||||
tmp+="月";
|
||||
tmp+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"三十"));
|
||||
if (cDay%10!=0||cDay==10){
|
||||
tmp+=numString.charAt((cDay-1)%10);
|
||||
}
|
||||
return tmp;
|
||||
}
|
||||
|
||||
function GetLunarDay(solarYear,solarMonth,solarDay){
|
||||
//solarYear = solarYear<1900?(1900+solarYear):solarYear;
|
||||
if(solarYear<1921){
|
||||
return "";
|
||||
}else{
|
||||
solarMonth = (parseInt(solarMonth)>0) ? (solarMonth-1) : 11;
|
||||
e2c(solarYear,solarMonth,solarDay);
|
||||
return GetcDateString();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user