Lunar Calendar is an indispensable part of daily life. It is closely related to human life. To some extent, it has been with us. Today's task is to convert JavaScript into the implementation of lunar calendar, if you are interested, do not miss it. I hope this article will help you.
The Code is as follows:
Var LunarDate = {
Madd: new Array (0, 31, 59, 90,120,151,181,212,243,273,304,334 ),
HsString: 'a, B, C, E, Ji, Geng, Xin, Xi ',
EbString: 'son ugly Yin Mao chen Wu Wei Xi Hai ',
NumString: "August 5, 1234, 80 or 90 ",
MonString: "August 2345, 80 or 90 Winter ",
CalendarData: new Array (0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x0000b5, 0x2B6, 0x957, expires, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, primary, 0x92E, 0x7192D, 0xC95, 0xD4A, primary, 0xB55, 0x56A, 0x00005b, 0x25D, 0x92D, primary, 0xA95, 0x71695, 0x6CA, 0xB55, primary, 0x4DA, 0xA5B, primary, 0x52B, 0x8152A, 0xE95, 0x6AA, primary, 0xAB5, 0x4B6, primary, 0xA57, 0x526, 0x31D26, 0xD95, primary, 0x56A, 0x96D, primary, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, primary, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, primary, 0x497, 0x64B, primary, 0xEA5, 0x80D65, 0x5AC, 0xAB6, primary, 0x92E, 0xC96, primary, 0xD4A, 0xDA5, primary, 0x56A, 0x7155B, 0x25D, 0x92D, primary, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 0x40E95 ),
Year: null,
Month: null,
Day: null,
TheDate: null,
GetBit: function (m, n ){
Return (m> n) & 1;
},
E2c: function (){
This. TheDate = (arguments. length! = 3 )? New Date (): new Date (arguments [0], arguments [1], arguments [2]);
Var total, m, n, k;
Var isEnd = false;
Var tmp = this. TheDate. getFullYear ();
Total = (tmp-1921) * 365 + Math. floor (tmp-1921)/4) + this. madd [this. theDate. getMonth ()] + this. theDate. getDate ()-38;
If (this. TheDate. getYear () % 4 = 0 & this. TheDate. getMonth ()> 1 ){
Total ++;
}
For (m = 0; m ++ ){
K = (this. CalendarData [m] <0 xfff )? 11: 12;
For (n = k; n> = 0; n --){
If (total <= 29 + this. GetBit (this. CalendarData [m], n )){
IsEnd = true;
Break;
}
Total = total-29-this. GetBit (this. CalendarData [m], n );
}
If (isEnd)
Break;
}
This. Year = 1921 + m;
This. Month = k-n + 1;
This. Day = total;
If (k = 12 ){
If (this. Month = Math. floor (this. CalendarData [m]/0x10000) + 1 ){
This. Month = 1-this. Month;
}
If (this. Month> Math. floor (this. CalendarData [m]/0x10000) + 1 ){
This. Month --;
}
}
},
GetcDateString: function (){
Var tmp = "";
Tmp + = this. HsString. charAt (this. Year-4) % 10 );
Tmp + = this. EbString. charAt (this. Year-4) % 12 );
Tmp + = "year ";
If (this. Month <1 ){
Tmp + = "(bytes )";
Tmp + = this. MonString. charAt (-this. Month-1 );
} Else {
Tmp + = this. MonString. charAt (this. Month-1 );
}
Tmp + = "month ";
Tmp + = (this. Day <11 )? "Beginning": (this. Day <20 )? "10": (this. Day <30 )? "Identifier": "Thirty "));
If (this. Day % 10! = 0 | this. Day = 10 ){
Tmp + = this. NumString. charAt (this. Day-1) % 10 );
}
Return tmp;
},
GetLunarDay: function (solarYear, solarMonth, solarDay ){
If (solarYear <1921 | solarYear> 2020 ){
Return "";
} Else {
SolarMonth = (parseInt (solarMonth)> 0 )? (SolarMonth-1): 11;
This. e2c (solarYear, solarMonth, solarDay );
Return this. GetcDateString ();
}
}
};
Call method:
The Code is as follows:
LunarDate. GetLunarDay (2013, 1, 24 );