JavaScript計算間隔(年月日時分秒)


1、JavaScript計算間隔(閏年を考慮)
効果の概要:https://andyqi2018.gitee.io/qblog/essay/2019/20190216.html
純JavaScriptはリアルタイムリフレッシュ間隔を実現し、バックエンドは使用されず、コードは以下の通りである.
//         HTML                    
var y = 0, m = 0, d = 0;

function show(){
    var originTime = new Date();
    var nowTime = new Date();
    originTime.setFullYear(2019,1,17); //       ,     0~11
    originTime.setHours(0,35,0,0);
    //nowTime.setFullYear(2020,2,11); //       ,          
    //nowTime.setHours(22,22,0,0);
        
    var date21 = nowTime.getTime() - originTime.getTime();
    var tempY1 = originTime.getFullYear();
    var tempM1 = originTime.getMonth()+1;
    var tempD1 = originTime.getDate();
    var tempStr1 = tempY1 + "-" + tempM1 + "-" + tempD1;
    var tempY2 = nowTime.getFullYear();
    var tempM2 = nowTime.getMonth()+1;
    var tempD2 = nowTime.getDate();
    var tempStr2 = tempY + "-" + tempM + "-" + tempD;
    var tempON = [tempStr1, tempStr2];
    
    var days=Math.floor(date21/(24*3600*1000));     
    var leave1=date21%(24*3600*1000);
    var hours=Math.floor(leave1/(3600*1000));
    var leave2=leave1%(3600*1000);
    var minutes=Math.floor(leave2/(60*1000));
    var leave3=leave2%(60*1000);
    var seconds=Math.round(leave3/1000);
    getDiffYmdBetweenDate(tempON[0],tempON[1]);

    var timeON = new String("  ");
    timeON += y + " " + m + " " + d + " " + hours + "  " + minutes + "  " + seconds + " ";
    document.getElementById("timeer").innerHTML = timeON; //    ID
    setTimeout("show()",1000); //      
}


var getDiffYmdBetweenDate = function(sDate1,sDate2){
    var fixDate = function(sDate){
        var aD = sDate.split('-');
        for(var i = 0; i < aD.length; i++){
            aD[i] = fixZero(parseInt(aD[i]));
        }
        return aD.join('-');
    };

    var fixZero = function(n){
        return n < 10 ? '0'+n : n;
    };

    var fixInt = function(a){
        for(var i = 0; i < a.length; i++){
            a[i] = parseInt(a[i]);
        }
        return a;
    };

    var getMonthDays = function(y,m){
        var aMonthDays = [0,31,28,31,30,31,30,31,31,30,31,30,31];
        if((y%400 == 0) || (y%4==0 && y%100!=0)){
            aMonthDays[2] = 29;
        }
        return aMonthDays[m];
    };

    y = 0;
    m = 0;
    d = 0;
    var sTmp;
    var aTmp;
    sDate1 = fixDate(sDate1);
    sDate2 = fixDate(sDate2);
    if(sDate1 > sDate2){
        sTmp = sDate2;
        sDate2 = sDate1;
        sDate1 = sTmp;
    }
    var aDate1 = sDate1.split('-');
        aDate1 = fixInt(aDate1);
    var aDate2 = sDate2.split('-');
        aDate2 = fixInt(aDate2);
    //  
    y = aDate2[0] - aDate1[0];
    if( sDate2.replace(aDate2[0],'') < sDate1.replace(aDate1[0],'')){
        y = y - 1;
    }
    //  
    aTmp = [aDate1[0]+y,aDate1[1],fixZero(aDate1[2])];
    while(true){
        if(aTmp[1] == 12){
            aTmp[0]++;
            aTmp[1] = 1;
        }else{
            aTmp[1]++;
        }
        if(([aTmp[0],fixZero(aTmp[1]),aTmp[2]]).join('-') <= sDate2){
            m++;
        } else {
            break;
        }
    }
    //  
    aTmp = [aDate1[0]+y,aDate1[1]+m,aDate1[2]];
    if(aTmp[1] > 12){
        aTmp[0]++;
        aTmp[1] -= 12;
    }
    while(true){
        if(aTmp[2] == getMonthDays(aTmp[0],aTmp[1])){
            aTmp[1]++;
            aTmp[2] = 1;
        } else {
            aTmp[2]++;
        }
        sTmp = ([aTmp[0],fixZero(aTmp[1]),fixZero(aTmp[2])]).join('-');
        if(sTmp <= sDate2){
            d++;
        } else {
            break;
        }
    }
    //return {y:y,m:m,d:d};
};

/*
var aTest = [
    ['1984-9-17','2015-8-15'],
    ['1984-9-17','1985-9-18'],
    ['1984-9-17','1984-10-17'],
    ['1984-9-17','1984-10-10'],
];
var timeTest = new String("");
for(var i = 0; i < aTest.length; i++){
    console.log(aTest[i][0]+':'+aTest[i][1]);
    console.log(getDiffYmdBetweenDate(aTest[i][0],aTest[i][1]));
    timeTest = timeTest + "  " + y + " " + m + " " + d + " ";
}
*/

2、陰暦の時間間隔/陰暦の誕生日変換を計算する(閏年と閏月と干支などの伝統的な説明を考慮する必要がある)PHPコード:
    
    /**
     *   ,  ,    
     */
    class o_calendar {
        public static $MIN_YEAR = 1600;
        public static $MAX_YEAR = 2200;
        //public static $lunarInfo = array(array(0,2,9,21936),array(6,1,30,9656),array(0,2,17,9584),array(0,2,6,21168),array(5,1,26,43344),array(0,2,13,59728),array(0,2,2,27296),array(3,1,22,44368),array(0,2,10,43856),array(8,1,31,19304),array(0,2,19,19168),array(0,2,8,42352),array(5,1,29,21096),array(0,2,16,53856),array(0,2,4,55632),array(4,1,25,27304),array(0,2,13,22176),array(0,2,2,39632),array(2,1,22,19176),array(0,2,10,19168),array(6,1,30,42200),array(0,2,18,42192),array(0,2,6,53840),array(5,1,26,54568),array(0,2,14,46400),array(0,2,3,54944),array(2,1,23,38608),array(0,2,11,38320),array(7,2,1,18872),array(0,2,20,18800),array(0,2,8,42160),array(5,1,28,45656),array(0,2,16,27216),array(0,2,5,27968),array(4,1,24,44456),array(0,2,13,11104),array(0,2,2,38256),array(2,1,23,18808),array(0,2,10,18800),array(6,1,30,25776),array(0,2,17,54432),array(0,2,6,59984),array(5,1,26,27976),array(0,2,14,23248),array(0,2,4,11104),array(3,1,24,37744),array(0,2,11,37600),array(7,1,31,51560),array(0,2,19,51536),array(0,2,8,54432),array(6,1,27,55888),array(0,2,15,46416),array(0,2,5,22176),array(4,1,25,43736),array(0,2,13,9680),array(0,2,2,37584),array(2,1,22,51544),array(0,2,10,43344),array(7,1,29,46248),array(0,2,17,27808),array(0,2,6,46416),array(5,1,27,21928),array(0,2,14,19872),array(0,2,3,42416),array(3,1,24,21176),array(0,2,12,21168),array(8,1,31,43344),array(0,2,18,59728),array(0,2,8,27296),array(6,1,28,44368),array(0,2,15,43856),array(0,2,5,19296),array(4,1,25,42352),array(0,2,13,42352),array(0,2,2,21088),array(3,1,21,59696),array(0,2,9,55632),array(7,1,30,23208),array(0,2,17,22176),array(0,2,6,38608),array(5,1,27,19176),array(0,2,15,19152),array(0,2,3,42192),array(4,1,23,53864),array(0,2,11,53840),array(8,1,31,54568),array(0,2,18,46400),array(0,2,7,46752),array(6,1,28,38608),array(0,2,16,38320),array(0,2,5,18864),array(4,1,25,42168),array(0,2,13,42160),array(10,2,2,45656),array(0,2,20,27216),array(0,2,9,27968),array(6,1,29,44448),array(0,2,17,43872),array(0,2,6,38256),array(5,1,27,18808),array(0,2,15,18800),array(0,2,4,25776),array(3,1,23,27216),array(0,2,10,59984),array(8,1,31,27432),array(0,2,19,23232),array(0,2,7,43872),array(5,1,28,37736),array(0,2,16,37600),array(0,2,5,51552),array(4,1,24,54440),array(0,2,12,54432),array(0,2,1,55888),array(2,1,22,23208),array(0,2,9,22176),array(7,1,29,43736),array(0,2,18,9680),array(0,2,7,37584),array(5,1,26,51544),array(0,2,14,43344),array(0,2,3,46240),array(4,1,23,46416),array(0,2,10,44368),array(9,1,31,21928),array(0,2,19,19360),array(0,2,8,42416),array(6,1,28,21176),array(0,2,16,21168),array(0,2,5,43312),array(4,1,25,29864),array(0,2,12,27296),array(0,2,1,44368),array(2,1,22,19880),array(0,2,10,19296),array(6,1,29,42352),array(0,2,17,42208),array(0,2,6,53856),array(5,1,26,59696),array(0,2,13,54576),array(0,2,3,23200),array(3,1,23,27472),array(0,2,11,38608),array(11,1,31,19176),array(0,2,19,19152),array(0,2,8,42192),array(6,1,28,53848),array(0,2,15,53840),array(0,2,4,54560),array(5,1,24,55968),array(0,2,12,46496),array(0,2,1,22224),array(2,1,22,19160),array(0,2,10,18864),array(7,1,30,42168),array(0,2,17,42160),array(0,2,6,43600),array(5,1,26,46376),array(0,2,14,27936),array(0,2,2,44448),array(3,1,23,21936),array(0,2,11,37744),array(8,2,1,18808),array(0,2,19,18800),array(0,2,8,25776),array(6,1,28,27216),array(0,2,15,59984),array(0,2,4,27424),array(4,1,24,43872),array(0,2,12,43744),array(0,2,2,37600),array(3,1,21,51568),array(0,2,9,51552),array(7,1,29,54440),array(0,2,17,54432),array(0,2,5,55888),array(5,1,26,23208),array(0,2,14,22176),array(0,2,3,42704),array(4,1,23,21224),array(0,2,11,21200),array(8,1,31,43352),array(0,2,19,43344),array(0,2,7,46240),array(6,1,27,46416),array(0,2,15,44368),array(0,2,5,21920),array(4,1,24,42448),array(0,2,12,42416),array(0,2,2,21168),array(3,1,22,43320),array(0,2,9,26928),array(7,1,29,29336),array(0,2,17,27296),array(0,2,6,44368),array(5,1,26,19880),array(0,2,14,19296),array(0,2,3,42352),array(4,1,24,21104),array(0,2,10,53856),array(8,1,30,59696),array(0,2,18,54560),array(0,2,7,55968),array(6,1,27,27472),array(0,2,15,22224),array(0,2,5,19168),array(4,1,25,42216),array(0,2,12,42192),array(0,2,1,53584),array(2,1,21,55592),array(0,2,9,54560));
        public static $lunarInfo = array(array(0,2,15,9680),array(0,2,3,37584),array(3,1,23,51544),array(0,2,11,43344),array(7,1,31,46248),array(0,2,18,27296),array(0,2,7,44368),array(6,1,28,21928),array(0,2,16,19360),array(0,2,4,42416),array(4,1,25,21176),array(0,2,13,21168),array(0,2,2,26928),array(2,1,21,29864),array(0,2,9,27296),array(6,1,29,44368),array(0,2,17,39760),array(0,2,6,19296),array(4,1,26,42352),array(0,2,14,42224),array(0,2,4,21088),array(3,1,22,59696),array(0,2,10,54576),array(8,1,31,23208),array(0,2,19,22176),array(0,2,7,38608),array(5,1,28,19176),array(0,2,16,19152),array(0,2,5,42192),array(4,1,24,53864),array(0,2,12,45648),array(0,2,1,54560),array(2,1,21,55968),array(0,2,8,46496),array(6,1,29,38352),array(0,2,17,38320),array(0,2,7,18864),array(5,1,26,42168),array(0,2,14,42160),array(0,2,3,43600),array(3,1,23,46376),array(0,2,10,27968),array(0,1,30,44448),array(0,2,18,43872),array(0,2,8,37744),array(5,1,28,18808),array(0,2,16,18800),array(0,2,5,25776),array(4,1,25,27216),array(0,2,11,55888),array(0,2,1,27424),array(1,1,21,43872),array(0,2,9,43744),array(6,1,29,37608),array(0,2,17,37600),array(0,2,6,51552),array(5,1,26,54440),array(0,2,13,54432),array(0,2,2,55888),array(3,1,23,23208),array(0,2,11,22176),array(8,1,30,42704),array(0,2,18,42448),array(0,2,8,37584),array(6,1,28,43352),array(0,2,15,43344),array(0,2,4,46240),array(4,1,24,46416),array(0,2,12,44368),array(0,2,1,21920),array(2,1,21,42448),array(0,2,9,42416),array(7,1,30,21176),array(0,2,17,21104),array(0,2,6,26928),array(5,1,26,29864),array(0,2,14,27296),array(0,2,2,44368),array(3,1,23,19880),array(0,2,11,19296),array(8,1,31,42352),array(0,2,18,42208),array(0,2,7,53856),array(6,1,27,59696),array(0,2,15,54560),array(0,2,3,55968),array(4,1,24,23376),array(0,2,12,22224),array(0,2,2,19168),array(3,1,21,42216),array(0,2,9,42192),array(7,1,29,53848),array(0,2,17,43600),array(0,2,5,46368),array(5,1,25,54944),array(0,2,13,46496),array(0,2,3,21968),array(3,1,23,19160),array(0,2,11,18864),array(7,1,31,42168),array(0,2,19,42160),array(0,2,8,43600),array(6,1,28,46376),array(0,2,16,27936),array(0,2,5,44384),array(4,1,25,21936),array(0,2,13,37744),array(0,2,3,18800),array(3,1,23,42168),array(0,2,10,25776),array(7,1,30,27216),array(0,2,17,55888),array(0,2,7,23200),array(5,1,26,43856),array(0,2,14,43744),array(0,2,4,21216),array(3,1,24,51568),array(0,2,11,51552),array(8,1,31,54440),array(0,2,19,54432),array(0,2,8,54608),array(6,1,28,23208),array(0,2,16,22176),array(0,2,5,42704),array(4,1,26,21224),array(0,2,13,21200),array(0,2,2,43344),array(2,1,22,54440),array(0,2,10,45728),array(7,1,29,46416),array(0,2,17,44368),array(0,2,7,19872),array(5,1,27,42448),array(0,2,14,42416),array(0,2,4,21168),array(4,1,24,43192),array(0,2,12,26928),array(9,1,31,27288),array(0,2,19,27296),array(0,2,8,43856),array(6,1,29,19880),array(0,2,16,19296),array(0,2,5,42352),array(4,1,26,20848),array(0,2,13,53600),array(0,2,1,59696),array(3,1,22,27280),array(0,2,9,55968),array(7,1,30,23376),array(0,2,17,22224),array(0,2,7,19168),array(5,1,27,42216),array(0,2,15,41680),array(0,2,3,53584),array(4,1,23,54440),array(0,2,11,46368),array(9,1,31,54928),array(0,2,18,44448),array(0,2,8,21968),array(6,1,29,10968),array(0,2,17,17840),array(0,2,5,41648),array(5,1,25,45400),array(0,2,13,43344),array(0,2,2,46368),array(2,1,21,46480),array(0,2,9,44384),array(7,1,30,21936),array(0,2,18,21360),array(0,2,7,17776),array(5,1,27,25272),array(0,2,15,21168),array(0,2,4,26960),array(3,1,23,27816),array(0,2,11,23200),array(10,1,31,43856),array(0,2,19,42704),array(0,2,8,19168),array(6,1,28,42352),array(0,2,16,42336),array(0,2,5,53920),array(5,1,24,59728),array(0,2,12,54608),array(0,2,2,23200),array(3,1,22,43856),array(0,2,9,42704),array(7,1,30,19176),array(0,2,18,19120),array(0,2,7,43216),array(5,1,26,53864),array(0,2,14,45728),array(0,2,3,46416),array(4,1,24,22184),array(0,2,11,19872),array(0,1,31,38320),array(2,1,21,19128),array(0,2,9,18864),array(6,1,28,43192),array(0,2,16,25776),array(0,2,5,27280),array(4,1,25,46416),array(0,2,13,27472),array(0,2,3,11168),array(2,1,23,38320),array(0,2,11,37744),array(7,1,31,20848),array(0,2,18,53600),array(0,2,7,58544),array(5,1,28,27280),array(0,2,14,55952),array(0,2,4,23376),array(3,1,25,11112),array(0,2,13,10976),array(0,2,1,37600),array(2,1,21,53608),array(0,2,9,51536),array(6,1,29,54440),array(0,2,16,46240),array(0,2,5,46736),array(4,1,26,22224),array(0,2,14,21936),array(0,2,3,9680),array(3,1,23,41688),array(0,2,11,37552),array(7,1,31,43352),array(0,2,18,43344),array(0,2,7,46240),array(5,1,27,46416),array(0,2,15,44368),array(0,2,4,21936),array(4,1,25,9656),array(0,2,13,9584),array(9,2,2,21176),array(0,2,20,21168),array(0,2,9,26960),array(6,1,29,27816),array(0,2,17,23200),array(0,2,5,43856),array(4,1,26,21352),array(0,2,14,19168),array(0,2,3,42352),array(3,1,23,21168),array(0,2,10,53856),array(7,1,30,59728),array(0,2,18,54608),array(0,2,7,23200),array(5,1,27,43728),array(0,2,15,38352),array(0,2,5,19168),array(4,1,24,42200),array(0,2,12,42192),array(8,2,1,53848),array(0,2,20,45712),array(0,2,8,46416),array(7,1,29,22184),array(0,2,17,11680),array(0,2,6,38320),array(5,1,26,19128),array(0,2,14,18864),array(0,2,3,42160),array(3,1,23,45656),array(0,2,10,27216),array(8,1,30,44360),array(0,2,18,27472),array(0,2,8,11104),array(5,1,27,38320),array(0,2,15,37744),array(0,2,5,18800),array(4,1,25,25776),array(0,2,11,54432),array(10,1,31,59984),array(0,2,19,55952),array(0,2,9,23248),array(6,1,29,11112),array(0,2,17,10976),array(0,2,6,37600),array(5,1,26,51560),array(0,2,13,51536),array(0,2,2,54432),array(3,1,22,55888),array(0,2,10,46672),array(7,1,30,22224),array(0,2,18,21936),array(0,2,8,9680),array(5,1,28,37592),array(0,2,15,37552),array(0,2,4,43344),array(4,1,24,46248),array(0,2,12,46240),array(0,1,31,46416),array(2,1,21,22184),array(0,2,9,21936),array(6,1,30,9656),array(0,2,17,9584),array(0,2,6,21168),array(5,1,26,43344),array(0,2,13,59728),array(0,2,2,27296),array(3,1,22,44368),array(0,2,10,43856),array(8,1,31,19304),array(0,2,19,19168),array(0,2,8,42352),array(5,1,29,21096),array(0,2,16,53856),array(0,2,4,55632),array(4,1,25,27304),array(0,2,13,22176),array(0,2,2,39632),array(2,1,22,19176),array(0,2,10,19168),array(6,1,30,42200),array(0,2,18,42192),array(0,2,6,53840),array(5,1,26,54568),array(0,2,14,46400),array(0,2,3,54944),array(2,1,23,38608),array(0,2,11,38320),array(7,2,1,18872),array(0,2,20,18800),array(0,2,8,42160),array(5,1,28,45656),array(0,2,16,27216),array(0,2,5,27968),array(4,1,24,44456),array(0,2,13,11104),array(0,2,2,38256),array(2,1,23,18808),array(0,2,10,18800),array(6,1,30,25776),array(0,2,17,54432),array(0,2,6,59984),array(5,1,26,27976),array(0,2,14,23248),array(0,2,4,11104),array(3,1,24,37744),array(0,2,11,37600),array(7,1,31,51560),array(0,2,19,51536),array(0,2,8,54432),array(6,1,27,55888),array(0,2,15,46416),array(0,2,5,22176),array(4,1,25,43736),array(0,2,13,9680),array(0,2,2,37584),array(2,1,22,51544),array(0,2,10,43344),array(7,1,29,46248),array(0,2,17,27808),array(0,2,6,46416),array(5,1,27,21928),array(0,2,14,19872),array(0,2,3,42416),array(3,1,24,21176),array(0,2,12,21168),array(8,1,31,43344),array(0,2,18,59728),array(0,2,8,27296),array(6,1,28,44368),array(0,2,15,43856),array(0,2,5,19296),array(4,1,25,42352),array(0,2,13,42352),array(0,2,2,21088),array(3,1,21,59696),array(0,2,9,55632),array(7,1,30,23208),array(0,2,17,22176),array(0,2,6,38608),array(5,1,27,19176),array(0,2,15,19152),array(0,2,3,42192),array(4,1,23,53864),array(0,2,11,53840),array(8,1,31,54568),array(0,2,18,46400),array(0,2,7,46752),array(6,1,28,38608),array(0,2,16,38320),array(0,2,5,18864),array(4,1,25,42168),array(0,2,13,42160),array(10,2,2,45656),array(0,2,20,27216),array(0,2,9,27968),array(6,1,29,44448),array(0,2,17,43872),array(0,2,6,38256),array(5,1,27,18808),array(0,2,15,18800),array(0,2,4,25776),array(3,1,23,27216),array(0,2,10,59984),array(8,1,31,27432),array(0,2,19,23232),array(0,2,7,43872),array(5,1,28,37736),array(0,2,16,37600),array(0,2,5,51552),array(4,1,24,54440),array(0,2,12,54432),array(0,2,1,55888),array(2,1,22,23208),array(0,2,9,22176),array(7,1,29,43736),array(0,2,18,9680),array(0,2,7,37584),array(5,1,26,51544),array(0,2,14,43344),array(0,2,3,46240),array(4,1,23,46416),array(0,2,10,44368),array(9,1,31,21928),array(0,2,19,19360),array(0,2,8,42416),array(6,1,28,21176),array(0,2,16,21168),array(0,2,5,43312),array(4,1,25,29864),array(0,2,12,27296),array(0,2,1,44368),array(2,1,22,19880),array(0,2,10,19296),array(6,1,29,42352),array(0,2,17,42208),array(0,2,6,53856),array(5,1,26,59696),array(0,2,13,54576),array(0,2,3,23200),array(3,1,23,27472),array(0,2,11,38608),array(11,1,31,19176),array(0,2,19,19152),array(0,2,8,42192),array(6,1,28,53848),array(0,2,15,53840),array(0,2,4,54560),array(5,1,24,55968),array(0,2,12,46496),array(0,2,1,22224),array(2,1,22,19160),array(0,2,10,18864),array(7,1,30,42168),array(0,2,17,42160),array(0,2,6,43600),array(5,1,26,46376),array(0,2,14,27936),array(0,2,2,44448),array(3,1,23,21936),array(0,2,11,37744),array(8,2,1,18808),array(0,2,19,18800),array(0,2,8,25776),array(6,1,28,27216),array(0,2,15,59984),array(0,2,4,27424),array(4,1,24,43872),array(0,2,12,43744),array(0,2,2,37600),array(3,1,21,51568),array(0,2,9,51552),array(7,1,29,54440),array(0,2,17,54432),array(0,2,5,55888),array(5,1,26,23208),array(0,2,14,22176),array(0,2,3,42704),array(4,1,23,21224),array(0,2,11,21200),array(8,1,31,43352),array(0,2,19,43344),array(0,2,7,46240),array(6,1,27,46416),array(0,2,15,44368),array(0,2,5,21920),array(4,1,24,42448),array(0,2,12,42416),array(0,2,2,21168),array(3,1,22,43320),array(0,2,9,26928),array(7,1,29,29336),array(0,2,17,27296),array(0,2,6,44368),array(5,1,26,19880),array(0,2,14,19296),array(0,2,3,42352),array(4,1,24,21104),array(0,2,10,53856),array(8,1,30,59696),array(0,2,18,54560),array(0,2,7,55968),array(6,1,27,27472),array(0,2,15,22224),array(0,2,5,19168),array(4,1,25,42216),array(0,2,12,42192),array(0,2,1,53584),array(2,1,21,55592),array(0,2,9,54560),array(7,1,29,55952),array(0,2,17,46496),array(0,2,7,21968),array(5,1,28,19160),array(0,2,15,18864),array(0,2,4,42160),array(4,1,24,53848),array(0,2,12,43600),array(9,1,31,46376),array(0,2,19,27936),array(0,2,8,44384),array(6,1,29,21936),array(0,2,16,37744),array(0,2,6,18800),array(4,1,26,25784),array(0,2,14,21680),array(0,2,2,27216),array(3,1,22,27944),array(0,2,10,27296),array(7,1,30,43856),array(0,2,17,43728),array(0,2,7,21216),array(5,1,27,51568),array(0,2,15,43360),array(0,2,3,54432),array(4,1,23,59984),array(0,2,11,55632),array(0,2,1,23200),array(0,2,19,22176),array(0,2,8,42704),array(6,1,29,21224),array(0,2,17,21200),array(0,2,5,43216),array(5,1,25,54440),array(0,2,13,45728),array(0,2,2,46416),array(2,1,22,22184),array(0,2,10,21920),array(7,1,30,42448),array(0,2,18,42416),array(0,2,7,21168),array(5,1,27,43192),array(0,2,15,26800),array(0,2,4,29328),array(4,1,23,46416),array(0,2,11,27472),array(0,2,1,11680),array(0,2,20,19296),array(0,2,8,42352),array(6,1,29,20848),array(0,2,16,53600),array(0,2,5,59568),array(5,1,25,27280),array(0,2,12,55952),array(0,2,2,23376),array(3,1,23,11112),array(0,2,10,10976),array(7,1,30,41704),array(0,2,18,41680),array(0,2,7,53584),array(6,1,26,54440),array(0,2,14,46368),array(0,2,3,54928),array(4,1,24,23248),array(0,2,11,21936),array(10,2,1,10968),array(0,2,20,17840),array(0,2,9,41648),array(6,1,28,43352),array(0,2,16,43344),array(0,2,5,46240),array(5,1,25,46416),array(0,2,12,44368),array(0,2,2,21936),array(3,1,23,9656),array(0,2,11,17776),array(7,1,30,25272),array(0,2,18,21168),array(0,2,7,26960),array(6,1,27,27816),array(0,2,14,23200),array(0,2,3,43856),array(4,1,24,21352),array(0,2,12,19168),array(0,1,31,42352),array(2,1,21,21168),array(0,2,8,53920),array(6,1,28,59728),array(0,2,15,54608),array(0,2,5,23200),array(5,1,25,43856),array(0,2,13,42704),array(0,2,2,19168),array(3,1,22,42328),array(0,2,10,42192),array(7,1,30,53848),array(0,2,17,45712),array(0,2,6,46416),array(6,1,27,22184),array(0,2,15,11680));
     
        /**
         *         
         * @param year   - 
         * @param month   - 
         * @param date   - 
         */
        public static function convertSolarToLunar($year,$month,$date){
            $yearData = self::$lunarInfo[$year-self::$MIN_YEAR];
            if($year==self::$MIN_YEAR&&$month<=2&&$date<=9){
                return array('1891-01-01',false);
            }
            $ret = self::getLunarByBetween($year,self::getDaysBetweenSolar($year,$month,$date,$yearData[1],$yearData[2]));
            $ret[0] = fn::formatDate($ret[0]);
            return $ret;
        }
      
        /**
        *         
        * @param year   - 
        * @param month   - ,    :         ,           ,      13  ,       13      0
        * @param date   - 
        */
        public static function convertLunarToSolar($year,$month,$date){
            $yearData = self::$lunarInfo[$year-self::$MIN_YEAR];
            $between = self::getDaysBetweenLunar($year,$month,$date);
            $res = mktime(0,0,0,$yearData[1],$yearData[2],$year);
      
            return date('Y-m-d',$res+$between*24*60*60);
        }
      
        /**
         *        
         * @param year
         */
        public static function isLeapYear($year){
            return (($year%4==0 && $year%100 !=0) || ($year%400==0));
        }
      
        /**
         *       
         * @param year
         */
        public static function getLunarYearName($year){
             $sky = array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
             $earth = array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
      
             $year = $year.'';
             return $sky[$year{3}].$earth[$year%12];
        }
      
        /**
         *          
         * @param year    
         */
        public static function getYearZodiac($year){
             $zodiac = array(' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ');
             return $zodiac[$year%12];
        }
      
        /**
         *          
         * @param year   - 
         * @param month   - 
         */
        public static function getSolarMonthDays($year,$month){
             $monthHash = array('1'=>31,'2'=>self::isLeapYear($year)?29:28,'3'=>31,'4'=>30,'5'=>31,'6'=>30,'7'=>31,'8'=>31,'9'=>30,'10'=>31,'11'=>30,'12'=>31);
             return $monthHash["$month"];
        }
      
      
        /**
         *          
         * @param year   - 
         * @param month   - ,     
         */
        public static function getLunarMonthDays($year,$month){
             $monthData = self::getLunarMonths($year);
             return $monthData[$month-1];
        }
      
        /**
         *             
         * @param year
         */
        public static function getLunarMonths($year){
      
            $yearData = self::$lunarInfo[$year - self::$MIN_YEAR];
            $leapMonth = $yearData[0];
      
            $bit = decbin($yearData[3]);
            for ($i = 0; $i < strlen($bit);$i ++) {
                $bitArray[$i] = substr($bit, $i, 1);
            }
      
            for($k=0,$klen=16-count($bitArray);$k<$klen;$k++){
                array_unshift($bitArray, '0');
            }
      
            $bitArray = array_slice($bitArray,0,($leapMonth==0?12:13));
            for($i=0; $i<count($bitArray); $i++){
                $bitArray[$i] = $bitArray[$i] + 29;
            }
      
            return $bitArray;
        }
      
        /**
         *          
         * @param year     
         */
        public static function getLunarYearDays($year){
            $yearData = self::$lunarInfo[$year-self::$MIN_YEAR];
            $monthArray = self::getLunarYearMonths($year);
            $len = count($monthArray);
            return ($monthArray[$len-1]==0?$monthArray[$len-2]:$monthArray[$len-1]);
        }
      
        public static function getLunarYearMonths($year){
             //debugger;
            $monthData = self::getLunarMonths($year);
            $res=array();
            $temp=0;
            $yearData = self::$lunarInfo[$year-self::$MIN_YEAR];
            $len = ($yearData[0]==0?12:13);
            for($i=0;$i<$len;$i++){
                $temp=0;
                for($j=0;$j<=$i;$j++){
                    $temp+=$monthData[$j];
                }
                array_push($res, $temp);
            }
            return $res;
        }
      
        /**
         *     
         * @param year     
         */
        public static function getLeapMonth($year){
            $yearData = self::$lunarInfo[$year-self::$MIN_YEAR];
            return $yearData[0];
        }
      
        /**
         *                 
         * @param year
         * @param month
         * @param date
         */
        public static function getDaysBetweenLunar($year,$month,$date){
            $yearMonth = self::getLunarMonths($year);
      
            $res=0;
            for($i=1;$i<$month;$i++){
                $res +=$yearMonth[$i-1];
            }
            $res+=$date-1;
      
            return $res;
        }
      
        /**
         *   2          
         * @param year    
         * @param cmonth
         * @param cdate
         * @param dmonth            
         * @param ddate            
         */
        public static function getDaysBetweenSolar($year,$cmonth,$cdate,$dmonth,$ddate){
      
            $a = mktime(0,0,0,$cmonth,$cdate,$year);
            $b = mktime(0,0,0,$dmonth,$ddate,$year);
      
            return ceil(($a-$b)/24/3600);
        }
      
        /**
         *                  
         * @param year    
         * @param between   
         */
        public static function getLunarByBetween($year,$between){
            //debugger;
            $lunarArray = array();
            $yearMonth=array();
            $t=0;
            $e=0;
            $leapMonth=0;
            $m='';
            $isLeap = false;
            if($between==0){
                array_push($lunarArray, $year,'  ','  ');
                $t = 1;
                $e = 1;
                $month = $t;
            }else{
                $year = $between>0? $year : ($year-1);
                $yearMonth = self::getLunarYearMonths($year);
                $leapMonth = self::getLeapMonth($year);
                $between = $between>0?$between : (self::getLunarYearDays($year)+$between);
      
                for($i=0;$i<13;$i++){
                    if($between==$yearMonth[$i]){
                        $t=$i+2;
                        $e=1;
                        break;
                    }else if($between<$yearMonth[$i]){
                        $t=$i+1;
                        $e=$between-(empty($yearMonth[$i-1])?0:$yearMonth[$i-1])+1;
                        break;
                    }
                }
                 
                if ($leapMonth!=0&&$t==$leapMonth+1) {
                    $month = $t- 1;
                    $isLeap = true;
                }else{
                    $month = $leapMonth!=0&&$leapMonth+1<$t?($t-1):$t;
                    $isLeap;
                }
                //$m = ($leapMonth!=0&&$t==$leapMonth+1)?(' '.self::getCapitalNum($t- 1,true)):self::getCapitalNum(($leapMonth!=0&&$leapMonth+1
      
                //array_push($lunarArray,$year,$m,self::getCapitalNum($e,false));
            }
             
            return array($year . '-' . $month . '-' . $e, $isLeap);
            //array_push($lunarArray,self::getLunarYearName($year));//    
            //array_push($lunarArray,$t,$e);
            //array_push($lunarArray,self::getYearZodiac($year));//12  
            //array_push($lunarArray,$leapMonth);//   
            //return $lunarArray;
        }
      
        /**
         *          
         * @param num   
         * @param isMonth         
         */
        public static function getCapitalNum($num,$isMonth){
            $isMonth = $isMonth || false;
            $dateHash=array('0'=>'','1'=>' ','2'=>' ','3'=>' ','4'=>' ','5'=>' ','6'=>' ','7'=>' ','8'=>' ','9'=>' ','10'=>' ');
            $monthHash=array('0'=>'','1'=>'  ','2'=>'  ','3'=>'  ','4'=>'  ','5'=>'  ','6'=>'  ','7'=>'  ','8'=>'  ','9'=>'  ','10'=>'  ','11'=>'  ','12'=>'  ');
            $res='';
      
            if($isMonth){
                $res = $monthHash[$num];
            }else{
                if($num<=10){
                    $res = ' '.$dateHash[$num];
                }else if($num>10&&$num<20){
                    $res = ' '.$dateHash[$num-10];
                }else if($num==20){
                    $res = "  ";
                }else if($num>20&&$num<30){
                    $res = " ".$dateHash[$num-20];
                }else if($num==30){
                    $res = "  ";
                }
            }
            return $res;
        }
        /**
         *
         * @param unknown $y
         * @param unknown $m
         * @param unknown $d
         * @param unknown $time
         */
        public static function getSolarAndLunarTime($y, $m, $d , $time){
            $aTime = explode(':', $time);
            $sSolar = $y . cfg::lang('year') . $m . cfg::lang('month') . $d . cfg::lang('day') . ' ' . $aTime[0] . cfg::lang('hour') . $aTime[1] . cfg::lang('minute');
             
            $aLunarRes = calendarswach::convertSolarToLunar($y, $m, $d);
            $lunarDate = $aLunarRes[0];//    
            $isLeap = $aLunarRes[1];//    
            $aLunar = explode('-', $lunarDate);
            $blockNumber = cfg::lang('blockNumber');
            $lunarY = $blockNumber[intval($aLunar[0]{0})] . $blockNumber[intval($aLunar[0]{1})] . $blockNumber[intval($aLunar[0]{2})] . $blockNumber[intval($aLunar[0]{3})];
            $calendarLang = cfg::lang('calendar');
            $lunarM = $calendarLang['month'][intval($aLunar[1])];
            if ($isLeap) {
                $lunarM = cfg::lang('leap') . $lunarM;
            }
            $lunarD = $calendarLang['date'][intval($aLunar[2])];
             
            $aTime = explode(':', $time);
            $tempHour = ($aTime[0] % 2) == 0 ? $aTime[0] + 2 : $aTime[0] + 3; //  +3    +2
            $tempHour = $tempHour % 24;
            $hourDiZhi = $tempHour / 2; //        
            if ($hourDiZhi == 0) {
                $hourDiZhi = 12;
            }
            $lang = cfg::lang('diZhi');
             
            $lunarH = $lang[$hourDiZhi] . cfg::lang('lunarhour');
             
            return array('solar' => $sSolar,
                         'lunar' => $lunarY . cfg::lang('year') . $lunarM . $lunarD . cfg::lang('day') .  ' ' . $lunarH);
        }
    ///   
        /**
         *
         * @param unknown $sdate
         * @param unknown $edate
         */
        public static function getGapDays($sdate, $edate){
            if($sdate > $edate){
                return 0;
            }
            $aSdate = explode('-', $sdate);
            $aEdate = explode('-', $edate);
            $sYear = $aSdate[0];
            $sMonth = (int)$aSdate[1];
            $sDate = (int)$aSdate[2];
         
            $eYear = $aEdate[0];
            $eMonth = (int)$aEdate[1];
            $eDate = (int)$aEdate[2];
         
            $allDays = $yearDays = 0;
            //   
            if($sYear == $eYear){
                if($sMonth == $eMonth){
                    //    
                    return $eDate - $sDate;
                }
                //   
                $isLeap = self::isLeapYear($sYear);
                $loopMonth = $sMonth;
                while ($loopMonth <= $eMonth){
                    if($loopMonth == $sMonth){
                        $monDays = self::getMonthDays($loopMonth, $isLeap);
                        $allDays += ($monDays - $sDate);//          
                    }elseif ($loopMonth == $eMonth){
                        $allDays += $eDate;//       
                    }else {
                        $monDays = self::getMonthDays($loopMonth, $isLeap);
                        $allDays += $monDays;//        
                    }
                    $loopMonth++;
                }
                return $allDays;
            }
            //  
            $aLeapAndGeneral = self::getLongYearsLeapAndGeneral($sYear, $eYear);
         
            $yearDays = $aLeapAndGeneral['leapYears'] * 366 + $aLeapAndGeneral['generalYears'] * 365;
            //var_dump($aLeapAndGeneral,$yearDays, $sYear, $eYear, $allDays);
            //    
         
            $loopMonth = $sMonth;
            $loopYear = $sYear;
            $isLeap = self::isLeapYear($loopYear);
            while (1){
                if(($loopMonth == $sMonth) && ($loopYear == $sYear) ){
                    $monDays = self::getMonthDays($loopMonth, $isLeap);
                    $allDays += ($monDays - $sDate);//          
                }elseif (($loopMonth == $eMonth) && ($loopYear == $eYear) ){
                    $allDays += $eDate;//       
                    break;
                }else {
                    $monDays = self::getMonthDays($loopMonth, $isLeap);
                    $allDays += $monDays;//        
                }
                $loopMonth++;
                if($loopMonth == 13){
                    //    
                    $loopMonth = 1;// 1      
                    $loopYear = $eYear;
                    $isLeap = self::isLeapYear($loopYear);
                }
            }
            //var_dump($yearDays, $allDays);
            $allDays += $yearDays;
         
            return $allDays;
        }
         
        //    2 ( 2 )         
        //    
        public static function getLongYearsLeapAndGeneral($sYear, $eYear){
            $sYear = (int)$sYear;
            $eYear = (int)$eYear;
            $gapYears = $eYear - $sYear;
            if($gapYears < 2){
                return array('leapYears' => 0, 'generalYears' => 0);
            }
         
            $leapYears = $generalYears = 0;
            $firstLeapYear = ++$sYear;
            $endLeapYear = --$eYear;
         
            //5   
            if($gapYears < 10){
                while ($firstLeapYear <= $endLeapYear){
                    if(self::isLeapYear($firstLeapYear)){
                        $leapYears++;
                    }else {
                        $generalYears++;
                    }
                    $firstLeapYear++;
                }
                return array('leapYears' => $leapYears, 'generalYears' => $generalYears);
            }
            //  5 
            //             
            $sEgeneralYears = 0;
            for ($i = 0; $i < 5; $i++){
                if(self::isLeapYear($firstLeapYear)){
                    break;
                }
                $sEgeneralYears++;
                $firstLeapYear++;
            }
            //        
            for ($i = 0; $i < 5; $i++){
                if(self::isLeapYear($endLeapYear)){
                    break;
                }
                $sEgeneralYears++;
                $endLeapYear--;
            }
            //   1700 1800 1900 2100     
            $noleap100th = self::get100th($firstLeapYear, $endLeapYear);
            $modGapYears = $endLeapYear - $firstLeapYear;
            $leapYears = ($modGapYears) / 4;
            $generalYears = $leapYears * 3;
         
            $leapYears = $leapYears + 1 - $noleap100th;//         100
            $generalYears += $noleap100th;//   100  
            //       
            $generalYears += $sEgeneralYears;
            return array('leapYears' => $leapYears, 'generalYears' => $generalYears);
        }
        //   1700 1800 1900 2100     
        public static function get100th($sy, $ey){
            $c = 0;
            foreach (array(1700,1800,1900,2100) as $y){
                if ($sy <= $y && $y<= $ey) {
                    $c++;
                }
            }
            return $c;
        }
        //        
        public static function getMonthDays($month, $isLeap){
            $month = (int)$month;
            if ($month == 2) {
                return $isLeap ? 29 : 28;
            }
            //1-12    31 ,29 ,31 ,30 ,31 ,30 ,31 ,31 ,30 ,31 ,30 ,31 
            return in_array($month, array(1,3,5,7,8,10,12)) ? 31 : 30;
        }
        //     
        public static function getYearGanZhi( $year){
            $year = (int)$year;
            //         /    
            $aYearZhuTianGan = array(7,8,9,10,1,2,3,4,5,6);
            $aYearZhuDizhi = array(9,10,11,12,1,2,3,4,5,6,7,8);
            $yearTianGan = $aYearZhuTianGan[substr($year, -1)];
            $yearDiZhi = $aYearZhuDizhi[$year % 12];
            return array('yearTianGan' => $yearTianGan, 'yearDiZhi' => $yearDiZhi);
        }
        //           
        /**
         *
         * @param unknown $year
         * @param string $lunar  true     false   
         */
        public static function getMonthsGanZhiByYear($year, $lunar = false){
            $year = (int)$year;
             
            //   2 ,       
            $aYearZhuTianGan = array(7,8,9,10,1,2,3,4,5,6);
            $yearTianGan = $aYearZhuTianGan[substr($year, -1)];
             
            $aYearFirstMonthTiangan = array(
                                            1 => 3,
                                            2 => 5,
                                            3 => 7,
                                            4 => 9,
                                            5 => 1,
                                            6 => 3,
                                            7 => 5,
                                            8 => 7,
                                            9 => 9,
                                            10 => 1);
            $monthTianGan = $aYearFirstMonthTiangan[$yearTianGan];
            $monthDiZhi = 3;//         (           )
             
            $loopTianGan = $monthTianGan;
            $loopDiZhi = $monthDiZhi;
             
            if ($lunar == true) {
                $leapMonth = self::getLeapMonth($year);
                $monthCount = $leapMonth > 0 ? 13 : 12;
                $isLeapSta = 0;
                for ($i = 1; $i<=$monthCount; $i++){
                    $month = $i;
                    $isleap = 0;
                    if($isLeapSta == 1){
                        $month = $i - 1;
                        $isleap = 1;
                        $isLeapSta = 2;
                    }elseif ($isLeapSta == 2){
                        //      
                        $month = $i - 1;
                    }
     
                    $aData[] = array('month' => $month, 'isleap' => $isleap, 'tiangan' => $loopTianGan,'dizhi' => $loopDiZhi);
                     
                    //       
                    if(($leapMonth == $i) && ($isLeapSta == 0)){
                        $isLeapSta = 1;
                    }
                    $loopTianGan++;
                    $loopTianGan = $loopTianGan == 11 ? 1 : $loopTianGan;
                         
                    $loopDiZhi++;
                    $loopDiZhi = $loopDiZhi == 13 ? 1 : $loopDiZhi;
                }
            }else{
                //1    
                $oneMonthTianGan = $monthTianGan - 1;
                $oneMonthTianGan = $oneMonthTianGan == 0 ? 10 : $oneMonthTianGan;
                $oneMonthDiZhi = 2;
                 
                $aData = array();
                $aData[] = array('month' => 1, 'tiangan' => $oneMonthTianGan, 'dizhi' => $oneMonthDiZhi);
                $aData[] = array('month' => 2, 'tiangan' => $monthTianGan,      'dizhi' => $monthDiZhi);
     
                for ($i=3; $i<=12; $i++){
                    $loopTianGan++;
                    $loopTianGan = $loopTianGan == 11 ? 1 : $loopTianGan;
                         
                    $loopDiZhi++;
                    $loopDiZhi = $loopDiZhi == 13 ? 1 : $loopDiZhi;
                    $aData[] = array('month' => $i, 'tiangan' => $loopTianGan,      'dizhi' => $loopDiZhi);
                }
            }
            return $aData;
        }
        /**
         *          
         * @param unknown $year
         * @param unknown $month
         */
        public static function getSolarMonthData($year, $month){
            //1600-1-1         
            //      
            $days = self::getMonthDays($month, self::isLeapYear($year));
             
            $startDate = '1600-01-01';//   
            $startTianGan = 8;
            $startDiZhi = 10;
            $startW = 6;//   
            $deffDays = calendarswach::getGapDays($startDate, "$year-$month-01") ;
             
            $aData = array();
            for ($i = 1; $i<= $days; $i++){
                $aLunarDate = self::convertSolarToLunar($year, $month, $i);
                $aLunar = explode('-', $aLunarDate[0]);
                $week = ($startW + $deffDays) % 7;
                 
                $dayTianGan = ($startTianGan + $deffDays) % 10;
                if ($dayTianGan == 0) {
                    $dayTianGan = 10;
                }
                 
                $dayDiZhi = ($startDiZhi + $deffDays) % 12;
                if ($dayDiZhi == 0) {
                    $dayDiZhi = 12;
                }
                 
                $aTemp = array();
                $aTemp['sd'] = $i;//    
                $aTemp['ly'] = (int)$aLunar[0];//   
                $aTemp['lm'] = (int)$aLunar[1];//   
                $aTemp['ld'] = (int)$aLunar[2];//   
                $aTemp['leap'] = $aLunarDate[1] ? $aTemp['lm'] : 0;//   
                $aTemp['w'] = $week;//   
                $aTemp['tg'] = $dayTianGan;//  
                $aTemp['dz'] = $dayDiZhi;//  
                $aData[] = $aTemp;
                 
                $deffDays++;//    +1
            }
            return $aData;
        }
        /**
         *          
         * @param unknown $year
         * @param unknown $month
         */
        public static function getLunarMonthData($year, $month, $leapMonth){
            $month = $leapMonth ? $month +1 : $month;
            $sdate = self::convertLunarToSolar($year, $month, '1');
            $aSolar = explode('-', $sdate);
            $sy = (int)$aSolar[0];
            $sm = (int)$aSolar[1];
            $sd = (int)$aSolar[2];
             
            $startDate = '1600-01-01';//   
            $startTianGan = 8;
            $startDiZhi = 10;
            $startW = 6;//   
            $deffDays = calendarswach::getGapDays($startDate, "$sy-$sm-$sd") ;//      
            //    30 
            $monthDays = self::getLunarMonthDays($year, $month);
            $aData = array();
            for ($i=1; $i<=$monthDays; $i++){
                $sdate = self::convertLunarToSolar($year, $month, $i);
                $aSolar = explode('-', $sdate);
                $week = ($startW + $deffDays) % 7;
                 
                $dayTianGan = ($startTianGan + $deffDays) % 10;
                if ($dayTianGan == 0) {
                    $dayTianGan = 10;
                }
                 
                $dayDiZhi = ($startDiZhi + $deffDays) % 12;
                if ($dayDiZhi == 0) {
                    $dayDiZhi = 12;
                }
                 
                $aTemp = array();
                $aTemp['ld'] = $i;//    
                $aTemp['sy'] = (int)$aSolar[0];//   
                $aTemp['sm'] = (int)$aSolar[1];//   
                $aTemp['sd'] = (int)$aSolar[2];//   
                $aTemp['leap'] = $leapMonth;//   
                $aTemp['w'] = $week;//   
                $aTemp['tg'] = $dayTianGan;//  
                $aTemp['dz'] = $dayDiZhi;//  
                $aData[] = $aTemp;
                $deffDays++;//    +1
            }
            return $aData;
        }
        //       
        public static function getDayHourGanZhis($dayTianGan){
            $aDayFirstHourTiangan = array(
                    1 => 1,
                    2 => 3,
                    3 => 5,
                    4 => 7,
                    5 => 9,
                    6 => 1,
                    7 => 3,
                    8 => 5,
                    9 => 7,
                    10 => 9
            );
            $aData = array();
            for ($hour=0;$hour<=23;$hour++){
                $tmpDayTianGan = $dayTianGan;//   
                $tempHour = ($hour % 2) == 0 ? $hour + 2 : $hour + 3; //  +3    +2
                $tempHour = $tempHour % 24;
                $hourDiZhi = $tempHour / 2; //        
                if ($hourDiZhi == 0) {
                    $hourDiZhi = 12;
                }
                 
                if ($hour > 22) {////    
                    $tmpDayTianGan = ($tmpDayTianGan + 1) % 10;
                    $tmpDayTianGan = ($tmpDayTianGan == 0 ) ? 10 : $tmpDayTianGan;
                }
                $dayFirstTianGan = $aDayFirstHourTiangan[$tmpDayTianGan];
                $hourTianGan = ($dayFirstTianGan + ($hourDiZhi - 1)) % 10;
                $hourTianGan = ($hourTianGan == 0 ) ? 10 : $hourTianGan;
                $aTemp = array('h' => $hour, 'tg' => $hourTianGan, 'dz' => $hourDiZhi);
                 
                $aData[] = $aTemp;
            }
            return $aData;
        }
         
    }
     
    //$ba = gongliNongli::convertLunarToSolar(1924,1,1);
    ?>

従来通りの広告スペース:ようこそhttps://andyqi2018.gitee.io/qblog/