美文网首页
Java 求阴历(C++ 求阴历方法的转换)

Java 求阴历(C++ 求阴历方法的转换)

作者: _明川 | 来源:发表于2019-01-23 09:43 被阅读0次

    前言:本篇文章求阴历方法不同于 我截止目前看到的大部分 java 求阴历方法,本篇文章代码都是从C++代码中翻译过来的。

    由于本篇文章没有什么技术点可以说的,下边我们直接放上工具类,年份时间范围为 1901年 - 2099年。如果想要调试直接将工具类复制 cv到工程 工具类中,调用 solarToLunar 方法即可获取到 所有相关信息的 HashMap对象。

    
    import android.annotation.SuppressLint;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.HashMap;
    
    /**
     * 阳历 转 阴历 工具类
     *
     * @packageName: cn.ymc.vip.suntimejava.util
     * @fileName: CalendarUtil
     * @date: 2019/1/4  14:49
     * @author: ymc
     * @QQ:745612618
     */
    
    public class CalendarUtil {
    
        private volatile static CalendarUtil instance;
    
        private CalendarUtil() {
        }
    
        private static final int MIN_YEAR = 1900;
        private static final int MIN_SOLAR_YEAR = 1901;
        private static final int MAX_YEAR = 2099;
        /**
         * 年干支
         */
        private String[] mYearGanZhi = {"甲子", "乙丑", "丙寅", "丁卯", "戊辰", "己巳", "庚午", "辛未", "壬申", "癸酉",
                "甲戌", "乙亥", "丙子", "丁丑", "戊寅", "己卯", "庚辰", "辛巳", "壬午", "癸未",
                "甲申", "乙酉", "丙戌", "丁亥", "戊子", "己丑", "庚寅", "辛卯", "壬辰", "癸巳",
                "甲午", "乙未", "丙申", "丁酉", "戊戌", "己亥", "庚子", "辛丑", "壬寅", "癸卯",
                "甲辰", "乙巳", "丙午", "丁未", "戊申", "己酉", "庚戌", "辛亥", "壬子", "癸丑",
                "甲寅", "乙卯", "丙辰", "丁巳", "戊午", "己未", "庚申", "辛酉", "壬戌", "癸亥"};
    
        /**
         * 定义起始年,1804年为甲子年属鼠
         */
        private final static int START_YEAR = 1804;
    
        /**
         * 10天干 /  12 地支
         */
        private String[] tianGan = new String[]{"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬",
                "癸"};
        private String[] diZhi = new String[]{"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申",
                "酉", "戌", "亥"};
    
        private static String[] shuXiang = {"鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"};
    
        private int[] mDiZhiTimes = {23, 1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 13, 13, 15, 15, 17, 17, 19, 19, 21, 21, 23};
    
        /**
         * 年干和月干的对应关系
         */
        private int[] mYearAndMonthGan = {3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4,
                5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6,
                7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8,
                9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2,
                3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4,
                5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6,
                7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8,
                9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2};
    
        private int[] mDayAndTimeGan = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2,
                3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4,
                5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6,
                7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8,
                9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2,
                3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4,
                5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6,
                7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8,
                9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,};
    
        private int[] normalYday = {1, 32, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};
        /**
         * 闰年的 情况
         */
        private int[] leapYday = {1, 32, 61, 92, 122, 153, 183, 214, 245, 275, 306, 336};
    
        private int[] TianGanDayLG = {10, 9, 7, 8, 7, 10, 9, 7, 8, 7};
        private int[] YinYang = {1, 0, 1, 0, 1, 0, 1, 0, 1, 0};
        private int[] DiZhiDayLG = {7, 10, 8, 8, 10, 7, 7, 10, 9, 9, 10, 7};
        private int[] TianGanTimeLG = {9, 8, 7, 6, 5, 9, 8, 7, 6, 5};
        private int[] DiZhiTimeLG = {9, 8, 7, 6, 5, 4, 9, 8, 7, 6, 5, 4};
    
        private int[] JiuGong = {6, 1, 8, 3, 4, 9, 2, 5, 7};
        private String[] m_LGAcupoint = {"公孙", "申脉", "内关", "外关", "临泣", "列缺", "照海", "照海", "后溪"};
    
        private int year;
        private int month;
        private int day;
        private int leap;
        private int nTem;
        private String baGuiStr;
        /**
         * 闰月
         */
        private int leapMonth;
        /**
         * 是否 闰月
         */
        private boolean isLeap;
        /**
         * 世纪
         */
        private int nCentry;
        /**
         * 求年的后两位
         */
        private int nLYear;
        /**
         * index 下标
         */
        private int rTn = -1;
    
        private int nTradYesrs;
        /**
         * 所求数据 包装
         */
        private HashMap<String, Object> resMap = new HashMap<>();
    
        /**
         * 用来表示1900年到2099年间农历年份的相关信息,共24位bit的16进制表示,其中:
         * 1. 前4位表示该年闰哪个月;
         * 2. 5-17位表示农历年份13个月的大小月分布,0表示小,1表示大;
         * 3. 最后7位表示农历年首(正月初一)对应的公历日期。** 以2014年的数据0x955ABF为例说明:
         * 1001 0101 0101 1010 1011 1111
         *   农历正月初一对应公历1月31号
         */
        private int[] lunarInfo = {
                //1900
                0x84B6BF,
                //1901-1910
                0x04AE53, 0x0A5748, 0x5526BD, 0x0D2650, 0x0D9544, 0x46AAB9, 0x056A4D, 0x09AD42, 0x24AEB6, 0x04AE4A,
                //1911-1920
                0x6A4DBE, 0x0A4D52, 0x0D2546, 0x5D52BA, 0x0B544E, 0x0D6A43, 0x296D37, 0x095B4B, 0x749BC1, 0x049754,
                //1921-1930
                0x0A4B48, 0x5B25BC, 0x06A550, 0x06D445, 0x4ADAB8, 0x02B64D, 0x095742, 0x2497B7, 0x04974A, 0x664B3E,
                //1931-1940
                0x0D4A51, 0x0EA546, 0x56D4BA, 0x05AD4E, 0x02B644, 0x393738, 0x092E4B, 0x7C96BF, 0x0C9553, 0x0D4A48,
                //1941-1950
                0x6DA53B, 0x0B554F, 0x056A45, 0x4AADB9, 0x025D4D, 0x092D42, 0x2C95B6, 0x0A954A, 0x7B4ABD, 0x06CA51,
                //1951-1960
                0x0B5546, 0x555ABB, 0x04DA4E, 0x0A5B43, 0x352BB8, 0x052B4C, 0x8A953F, 0x0E9552, 0x06AA48, 0x6AD53C,
                //1961-1970
                0x0AB54F, 0x04B645, 0x4A5739, 0x0A574D, 0x052642, 0x3E9335, 0x0D9549, 0x75AABE, 0x056A51, 0x096D46,
                //1971-1980
                0x54AEBB, 0x04AD4F, 0x0A4D43, 0x4D26B7, 0x0D254B, 0x8D52BF, 0x0B5452, 0x0B6A47, 0x696D3C, 0x095B50,
                //1981-1990
                0x049B45, 0x4A4BB9, 0x0A4B4D, 0xAB25C2, 0x06A554, 0x06D449, 0x6ADA3D, 0x0AB651, 0x095746, 0x5497BB,
                //1991-2000
                0x04974F, 0x064B44, 0x36A537, 0x0EA54A, 0x86B2BF, 0x05AC53, 0x0AB647, 0x5936BC, 0x092E50, 0x0C9645,
                //2001-2010
                0x4D4AB8, 0x0D4A4C, 0x0DA541, 0x25AAB6, 0x056A49, 0x7AADBD, 0x025D52, 0x092D47, 0x5C95BA, 0x0A954E,
                //2011-2020
                0x0B4A43, 0x4B5537, 0x0AD54A, 0x955ABF, 0x04BA53, 0x0A5B48, 0x652BBC, 0x052B50, 0x0A9345, 0x474AB9,
                //2021-2030
                0x06AA4C, 0x0AD541, 0x24DAB6, 0x04B64A, 0x6a573D, 0x0A4E51, 0x0D2646, 0x5E933A, 0x0D534D, 0x05AA43,
                //2031-2040
                0x36B537, 0x096D4B, 0xB4AEBF, 0x04AD53, 0x0A4D48, 0x6D25BC, 0x0D254F, 0x0D5244, 0x5DAA38, 0x0B5A4C,
                //2041-2050
                0x056D41, 0x24ADB6, 0x049B4A, 0x7A4BBE, 0x0A4B51, 0x0AA546, 0x5B52BA, 0x06D24E, 0x0ADA42, 0x355B37,
                //2051-2060
                0x09374B, 0x8497C1, 0x049753, 0x064B48, 0x66A53C, 0x0EA54F, 0x06AA44, 0x4AB638, 0x0AAE4C, 0x092E42,
                //2061-2070
                0x3C9735, 0x0C9649, 0x7D4ABD, 0x0D4A51, 0x0DA545, 0x55AABA, 0x056A4E, 0x0A6D43, 0x452EB7, 0x052D4B,
                //2071-2080
                0x8A95BF, 0x0A9553, 0x0B4A47, 0x6B553B, 0x0AD54F, 0x055A45, 0x4A5D38, 0x0A5B4C, 0x052B42, 0x3A93B6,
                //2081-2090
                0x069349, 0x7729BD, 0x06AA51, 0x0AD546, 0x54DABA, 0x04B64E, 0x0A5743, 0x452738, 0x0D264A, 0x8E933E,
                //2091-2099
                0x0D5252, 0x0DAA47, 0x66B53B, 0x056D4F, 0x04AE45, 0x4A4EB9, 0x0A4D4C, 0x0D1541, 0x2D92B5};
    
        /**
         * 单例模式
         *
         * @return CalendarUtil
         */
        public static CalendarUtil getInstance() {
            if (instance == null) {
                synchronized (CalendarUtil.class) {
                    if (instance == null) {
                        instance = new CalendarUtil();
                    }
                }
            }
            return instance;
        }
    
        /**
         * 将公历日期转换为农历日期,且标识是否是闰月
         *
         * @return 返回公历日期对应的农历日期
         */
        public HashMap<String, Object> solarToLunar(String date, Calendar today) throws ParseException {
            @SuppressLint("SimpleDateFormat")
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
            Calendar cal = Calendar.getInstance();
            cal.setTime(sdf.parse(date));
            int y = cal.get(Calendar.YEAR);
            // 月份统一 +1
            int m = cal.get(Calendar.MONTH) + 1;
            int i = cal.get(Calendar.DATE);
            int h = cal.get(Calendar.HOUR_OF_DAY);
            Date baseDate = new GregorianCalendar(MIN_YEAR, 0, 31).getTime();
            Date objDate = new GregorianCalendar(y, m - 1, i).getTime();
            int offset = (int) ((objDate.getTime() - baseDate.getTime()) / 86400000L);
            // 用offset减去每农历年的天数计算当天是农历第几天// iYear最终结果是农历的年份, offset是当年的第几天
            int iYear, daysOfYear = 0;
            for (iYear = MIN_YEAR; iYear <= MAX_YEAR && offset > 0; iYear++) {
                daysOfYear = daysInLunarYear(iYear);
                offset -= daysOfYear;
            }
            if (offset < 0) {
                offset += daysOfYear;
                iYear--;
            }
            // 农历年份
            year = iYear;
            leapMonth = leapMonth(iYear);
            // 闰哪个月,1 - 12
            isLeap = false;
            // 用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天
            int iMonth, daysOfMonth = 0;
            for (iMonth = 1; iMonth <= 13 && offset > 0; iMonth++) {
                daysOfMonth = daysInLunarMonth(iYear, iMonth);
                offset -= daysOfMonth;
            }
            // 当前月超过闰月,要校正
            if (leapMonth != 0 && iMonth > leapMonth) {
                --iMonth;
                if (iMonth == leapMonth) {
                    isLeap = true;
                }
            }
            // offset小于0时,也要校正
            if (offset < 0) {
                offset += daysOfMonth;
                --iMonth;
            }
            month = iMonth;
            day = offset + 1;
            leap = isLeap ? 1 : 0;
            // 获取年份天干地支
            resMap.put("cY", tianGan[getYearTianGanIndex(year)] + diZhi[getYearDiZhiIndex(year)] + "年");
            resMap.put("shu", getAnimalYearName(year));
            resMap.put("solar", getTraditionYearBySolarTerm(y, m, i));
            resMap.put("year", year);
            resMap.put("month", month);
            resMap.put("day", day);
            resMap.put("leap", leap);
            resMap.put("cM", tianGan[getMonthGanIndexBySolarTerm(y, m, i)] +
                    diZhi[getMonthZhiIndexBySolarTerm(y, m, i)] + "月");
            resMap.put("cD", tianGan[getDayGanIndex(y, m, i)] +
                    diZhi[getDayZhiIndex(y, m, i)] + "日");
            resMap.put("cH", tianGan[getTimeGanIndex(y, m, i, h)] +
                    diZhi[getTimeZhiIndex(h)] + "时");
            // 纳甲算法 查询所需信息
            resMap.put("najiaCD", tianGan[getDayGanIndex(y, m, i)]);
            resMap.put("najiaCDZhi", diZhi[getDayZhiIndex(y, m, i)]);
            resMap.put("najiaCH", tianGan[getTimeGanIndex(y, m, i, h)] +
                    diZhi[getTimeZhiIndex(h)]);
            resMap.put("najiaCHGan",tianGan[getTimeGanIndex(y, m, i, h)]);
            // 纳支算法 查询所需信息
            resMap.put("nazhiCH", diZhi[getTimeZhiIndex(h)]);
    
            return resMap;
        }
    
        /**
         * 获取该年的天干名称
         */
        private int getYearTianGanIndex(int year) {
            nTem = year % tianGan.length - 3;
            if (nTem <= 0) {
                return tianGan.length + nTem - 1;
            } else {
                return nTem - 1;
            }
        }
    
        /**
         * 获取该年的地支名称
         */
        private int getYearDiZhiIndex(int year) {
            nTem = year % 12 - 3;
            if (nTem <= 0) {
                return 12 + nTem - 1;
            } else {
                return nTem - 1;
            }
        }
    
        /**
         * 获取当前年份与起始年之间的差值
         **/
        private int subtractYear(int year) {
            int jiaziYear = START_YEAR;
            //如果年份小于起始的甲子年(START_YEAR = 1804),则起始甲子年往前偏移
            if (year < jiaziYear) {
                //60年一个周期
                jiaziYear = jiaziYear - (60 + 60 * ((jiaziYear - year) / 60));
            }
            return year - jiaziYear;
        }
    
        /**
         * 获取该年的生肖名称
         *
         * @param year 年份
         * @return
         */
        private String getAnimalYearName(int year) {
            return shuXiang[subtractYear(year) % 12] + "年";
        }
    
        /**
         * 传回农历 year年的总天数
         *
         * @param year 将要计算的年份
         * @return 返回传入年份的总天数
         */
        private int daysInLunarYear(int year) {
            int i, sum = 348;
            if (leapMonth(year) != 0) {
                sum = 377;
            }
            int monthInfo = lunarInfo[year - MIN_YEAR] & 0x0FFF80;
            for (i = 0x80000; i > 0x7; i >>= 1) {
                if ((monthInfo & i) != 0) {
                    sum += 1;
                }
            }
            return sum;
        }
    
        /**
         * 传回农历 year年month月的总天数,总共有13个月包括闰月
         *
         * @param year  将要计算的年份
         * @param month 将要计算的月份
         * @return 传回农历 year年month月的总天数
         */
        private int daysInLunarMonth(int year, int month) {
            return (lunarInfo[year - MIN_YEAR] & (0x100000 >> month)) == 0 ? 29 : 30;
        }
    
        /**
         * 传回农历 year年闰哪个月 1-12 , 没闰传回 0
         *
         * @param year 将要计算的年份
         * @return 传回农历 year年闰哪个月1-12, 没闰传回 0
         */
        private int leapMonth(int year) {
            return ((lunarInfo[year - MIN_YEAR] & 0xF00000)) >> 20;
        }
    
        /**
         * 通过SolarTerm 计算阴历年份
         *
         * @param year  year
         * @param month month
         * @param day   day
         * @return 阴历年份
         */
        private int getTraditionYearBySolarTerm(int year, int month, int day) {
            //计算当前年的立春日期
            if (month < 2) {
                nTradYesrs = year - 1;
            } else if (month > 3) {
                nTradYesrs = year;
            } else {
                //获取当年立春的日子
                if (day >= ((solarterms1[(year - MIN_SOLAR_YEAR) * 12 + 1]) >> 4)) {
                    nTradYesrs = year;
                } else {
                    nTradYesrs = year - 1;
                }
            }
            return nTradYesrs;
        }
    
        /**
         * 通过 年月日 计算 月份 天干
         *
         * @param year  year
         * @param month month
         * @param day   day
         * @return 天干位置
         */
        private int getMonthGanIndexBySolarTerm(int year, int month, int day) {
            rTn = -1;
            int monthGanNTem = 0;
            //获取年的天干
            int nTradYesrs = getTraditionYearBySolarTerm(year, month, day);
            //当前月的节气的开始
            if (day >= (solarterms1[(year - MIN_SOLAR_YEAR) * 12 + month - 1] >> 4)) {
                monthGanNTem = month - 1;
            } else {
                monthGanNTem = month - 2;
            }
            if (monthGanNTem <= 0) {
                monthGanNTem += 12;
            }
            int nGanValue = mYearAndMonthGan[getYearTianGanIndex(nTradYesrs) * 12 + monthGanNTem - 1];
            for (int i = 0; i < tianGan.length; i++) {
                if (nGanValue == (i + 1)) {
                    rTn = i;
                    break;
                }
            }
            return rTn;
        }
    
        /**
         * 通过 SolarTerm 计算月份 地支
         *
         * @param year  year
         * @param month month
         * @param day   day
         * @return
         */
        private int getMonthZhiIndexBySolarTerm(int year, int month, int day) {
            //当前月的节气的开始
            int monthZhiNTem;
            if (day >= (solarterms1[(year - MIN_SOLAR_YEAR) * 12 + month - 1] >> 4)) {
                monthZhiNTem = month + 1;
            } else {
                monthZhiNTem = month;
            }
            if (monthZhiNTem > 12) {
                monthZhiNTem = monthZhiNTem % 12;
            }
            for (int i = 0; i < 12; i++) {
                if (monthZhiNTem == i + 1) {
                    rTn = i;
                    break;
                }
            }
            return rTn;
        }
    
        /**
         * 获取 日 的 天干
         *
         * @param year  year
         * @param month month
         * @param day   day
         * @return 日的天干index
         */
        private int getDayGanIndex(int year, int month, int day) {
            int dayZhiNTem;
            //计算当前是什么世纪
            nCentry = year / 100 + 1;
            nCentry--;
            //取年份后两位数
            nLYear = year % 100;
            dayZhiNTem = 4 * nCentry + nCentry / 4 + 5 * nLYear + nLYear / 4 + 3 * (month + 1) / 5 + day - 3;
            if (month == 1) {
                nCentry = (year - 1) / 100 + 1;
                nCentry--;
                nLYear = (year - 1) % 100;
                dayZhiNTem = 4 * nCentry + nCentry / 4 + 5 * nLYear + nLYear / 4 + 3 * (13 + 1) / 5 + day - 3;
            } else if (month == 2) {
                nCentry = (year - 1) / 100 + 1;
                nCentry--;
                nLYear = (year - 1) % 100;
                dayZhiNTem = 4 * nCentry + nCentry / 4 + 5 * nLYear + nLYear / 4 + 3 * (14 + 1) / 5 + day - 3;
            }
            rTn = dayZhiNTem % tianGan.length - 1;
            if ((dayZhiNTem % tianGan.length) == 0) {
                rTn = tianGan.length - 1;
            }
            return rTn;
        }
    
        /**
         * 计算 天的 地支index
         *
         * @param year  year
         * @param month month
         * @param day   day
         * @return 天的 地支index
         */
        private int getDayZhiIndex(int year, int month, int day) {
            int dayZhinTem;
            //计算当前是什么世纪
            nCentry = year / 100 + 1;
            nCentry--;
            //取年份后两位数
            nLYear = year % 100;
            dayZhinTem = 8 * nCentry + nCentry / 4 + 5 * nLYear + nLYear / 4 + 3 * (month + 1) / 5 + day + 7;
            if (month == 1) {
                nCentry = (year - 1) / 100 + 1;
                nCentry--;
                nLYear = (year - 1) % 100;
                dayZhinTem = 8 * nCentry + nCentry / 4 + 5 * nLYear + nLYear / 4 + 3 * (13 + 1) / 5 + day + 7;
            } else if (month == 2) {
                nCentry = (year - 1) / 100 + 1;
                nCentry--;
                nLYear = (year - 1) % 100;
                dayZhinTem = 8 * nCentry + nCentry / 4 + 5 * nLYear + nLYear / 4 + 3 * (14 + 1) / 5 + day + 7;
            }
            if (month % 2 == 0) {
                dayZhinTem += 6;
            }
            rTn = dayZhinTem % 12 - 1;
            if ((dayZhinTem % 12) == 0) {
                rTn = 12 - 1;
            }
            return rTn;
        }
    
        /**
         * 计算小时天干index
         *
         * @param year  year
         * @param month month
         * @param day   day
         * @return 小时天干index
         */
        private int getTimeGanIndex(int year, int month, int day, int hour) {
            //找对应关系
            int nTimeGanIndex = mDayAndTimeGan[getDayGanIndex(year, month, day) * 12
                    + getTimeZhiIndex(hour)];
            for (int i = 0; i < 60; i++) {
                if (nTimeGanIndex == i + 1) {
                    rTn = i;
                    break;
                }
            }
            return rTn;
        }
    
        /**
         * 计算 小时 地支 index
         *
         * @param hour hour
         * @return 小时 地支 index
         */
        private int getTimeZhiIndex(int hour) {
            for (int i = 0; i < 12; i++) {
                if (mDiZhiTimes[i * 2] == 23 || mDiZhiTimes[i * 2 + 1] == 1) {
                    if (mDiZhiTimes[i * 2] <= hour) {
                        rTn = i;
                        break;
                    }
                    if (mDiZhiTimes[i * 2 + 1] > hour) {
                        rTn = i;
                        break;
                    }
                } else {
                    if (mDiZhiTimes[i * 2] <= hour && mDiZhiTimes[i * 2 + 1] > hour) {
                        rTn = i;
                        break;
                    }
                }
            }
            return rTn;
        }
    
        /**
         * 获取灵龟八法 信息
         * @param dayGanStr 天干
         * @param dayZhiStr 天支
         * @param timeGanStr 时间干
         * @param timeZhiStr 时间支
         * @return 灵龟八法信息
         */
        public String getBaGuiVal(String dayGanStr,String dayZhiStr,String timeGanStr,String timeZhiStr) {
            int GanValue = 0;
            int ZhiValue = 0;
            int YinYangValue = -1;
            for (int i = 0; i < 10; i++) {
                baGuiStr = tianGan[i];
                if (baGuiStr.equals(dayGanStr)) {
                    GanValue += TianGanDayLG[i];
                    YinYangValue = YinYang[i];
                }
                if (baGuiStr.equals(timeGanStr)) {
                    GanValue += TianGanTimeLG[i];
                }
            }
            for (int i = 0; i < 12; i++) {
                baGuiStr = diZhi[i];
                if (baGuiStr.equals(dayZhiStr)) {
                    ZhiValue += DiZhiDayLG[i];
                }
                if (baGuiStr.equals(timeZhiStr)) {
                    ZhiValue += DiZhiTimeLG[i];
                }
            }
            int sumValue = GanValue + ZhiValue;
            if (YinYangValue == 1) {
                sumValue %= 9;
                if (sumValue == 0) {
                    sumValue = 9;
                }
            } else if (YinYangValue == 0) {
                sumValue %= 6;
                if (sumValue == 0) {
                    sumValue = 6;
                }
            } else {
                sumValue = -1;
            }
            baGuiStr = "";
            for (int i = 0; i < 9; i++) {
                if (JiuGong[i] == sumValue) {
                    baGuiStr = m_LGAcupoint[i];
                    break;
                }
            }
            return baGuiStr;
        }
    
        /**
         * solarterms1 月日时 数组
         */
        private int[] solarterms1 = {
                //1901
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1902
                0x66, 0x54, 0x66, 0x66, 0x67, 0x77, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1903
                0x66, 0x55, 0x77, 0x66, 0x77, 0x77, 0x89, 0x99, 0x99, 0x99, 0x88, 0x88,
                //1904
                0x76, 0x55, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1905
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1906
                0x66, 0x54, 0x66, 0x66, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1907
                0x66, 0x55, 0x77, 0x66, 0x77, 0x77, 0x89, 0x99, 0x99, 0x99, 0x88, 0x88,
                //1908
                0x76, 0x55, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1909
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1910
                0x66, 0x54, 0x66, 0x66, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1911
                0x66, 0x55, 0x77, 0x66, 0x77, 0x77, 0x89, 0x99, 0x99, 0x99, 0x88, 0x88,
                //1912
                0x76, 0x55, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1913
                0x65, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1914
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1915
                0x66, 0x55, 0x67, 0x66, 0x67, 0x77, 0x89, 0x89, 0x99, 0x99, 0x88, 0x88,
                //1916
                0x66, 0x55, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1917
                0x65, 0x44, 0x66, 0x56, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x77,
                //1918
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1919
                0x66, 0x55, 0x67, 0x66, 0x67, 0x77, 0x89, 0x89, 0x99, 0x99, 0x88, 0x88,
                //1920
                0x66, 0x55, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1921
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x77,
                //1922
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1923
                0x66, 0x54, 0x66, 0x66, 0x67, 0x77, 0x89, 0x89, 0x99, 0x99, 0x88, 0x88,
                //1924
                0x66, 0x55, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1925
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x77,
                //1926
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1927
                0x66, 0x54, 0x66, 0x66, 0x67, 0x77, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1928
                0x66, 0x55, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1929
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1930
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1931
                0x66, 0x54, 0x66, 0x66, 0x67, 0x77, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1932
                0x66, 0x55, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1933
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1934
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1935
                0x66, 0x54, 0x66, 0x66, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1936
                0x66, 0x55, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1937
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1938
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1939
                0x66, 0x54, 0x66, 0x66, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1940
                0x66, 0x55, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1941
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1942
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1943
                0x66, 0x54, 0x66, 0x66, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1944
                0x66, 0x55, 0x66, 0x55, 0x56, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1945
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1946
                0x65, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x87,
                //1947
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1948
                0x66, 0x55, 0x56, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //1949
                0x55, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1950
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x87,
                //1951
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x89, 0x89, 0x89, 0x99, 0x88, 0x88,
                //1952
                0x66, 0x55, 0x56, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //1953
                0x55, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1954
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x77,
                //1955
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1956
                0x66, 0x55, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //1957
                0x55, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1958
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1959
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1960
                0x66, 0x54, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1961
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1962
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1963
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1964
                0x66, 0x54, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1965
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1966
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1967
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1968
                0x66, 0x54, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1969
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1970
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1971
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x89, 0x99, 0x88, 0x87,
                //1972
                0x66, 0x54, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1973
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1974
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1975
                0x66, 0x44, 0x66, 0x56, 0x67, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x87,
                //1976
                0x66, 0x54, 0x55, 0x45, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1977
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //1978
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x88, 0x77,
                //1979
                0x66, 0x44, 0x66, 0x56, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x87,
                //1980
                0x66, 0x54, 0x55, 0x45, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1981
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //1982
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1983
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x88, 0x89, 0x88, 0x99, 0x88, 0x87,
                //1984
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1985
                0x55, 0x44, 0x56, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //1986
                0x55, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1987
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x89, 0x88, 0x99, 0x88, 0x77,
                //1988
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //1989
                0x55, 0x44, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1990
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //1991
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1992
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //1993
                0x55, 0x43, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1994
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1995
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //1996
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //1997
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //1998
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //1999
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //2000
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2001
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2002
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //2003
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //2004
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2005
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2006
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2007
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x99, 0x88, 0x77,
                //2008
                0x66, 0x44, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2009
                0x55, 0x43, 0x55, 0x45, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2010
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2011
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x88, 0x77,
                //2012
                0x66, 0x44, 0x55, 0x45, 0x55, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2013
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2014
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2015
                0x65, 0x44, 0x66, 0x55, 0x66, 0x67, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //2016
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2017
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2018
                0x55, 0x44, 0x56, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2019
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //2020
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x76,
                //2021
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2022
                0x55, 0x44, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2023
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x89, 0x87, 0x77,
                //2024
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2025
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2026
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2027
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //2028
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2029
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2030
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2031
                0x55, 0x44, 0x66, 0x55, 0x66, 0x66, 0x78, 0x88, 0x88, 0x88, 0x77, 0x77,
                //2032
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2033
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2034
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2035
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2036
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2037
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2038
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2039
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2040
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2041
                0x55, 0x33, 0x55, 0x45, 0x55, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2042
                0x55, 0x43, 0x55, 0x45, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2043
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2044
                0x65, 0x44, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x78, 0x77, 0x66,
                //2045
                0x55, 0x33, 0x55, 0x44, 0x55, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2046
                0x55, 0x43, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2047
                0x55, 0x44, 0x66, 0x55, 0x56, 0x66, 0x78, 0x78, 0x88, 0x88, 0x77, 0x77,
                //2048
                0x65, 0x44, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x78, 0x76, 0x66,
                //2049
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x76,
                //2050
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2051
                0x55, 0x44, 0x55, 0x55, 0x56, 0x66, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2052
                0x55, 0x44, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x78, 0x76, 0x66,
                //2053
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x76,
                //2054
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2055
                0x55, 0x44, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2056
                0x55, 0x44, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x78, 0x76, 0x66,
                //2057
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2058
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2059
                0x55, 0x44, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2060
                0x55, 0x44, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x77, 0x66, 0x66,
                //2061
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2062
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2063
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2064
                0x55, 0x44, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x77, 0x66, 0x66,
                //2065
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2066
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2067
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2068
                0x55, 0x44, 0x55, 0x44, 0x45, 0x55, 0x67, 0x67, 0x77, 0x77, 0x66, 0x66,
                //2069
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2070
                0x55, 0x33, 0x55, 0x45, 0x55, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2071
                0x55, 0x43, 0x55, 0x55, 0x56, 0x56, 0x78, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2072
                0x55, 0x44, 0x55, 0x44, 0x45, 0x55, 0x67, 0x67, 0x77, 0x77, 0x66, 0x66,
                //2073
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x78, 0x77, 0x66,
                //2074
                0x55, 0x33, 0x55, 0x45, 0x55, 0x56, 0x77, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2075
                0x55, 0x43, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2076
                0x55, 0x44, 0x55, 0x44, 0x45, 0x55, 0x67, 0x67, 0x77, 0x77, 0x66, 0x66,
                //2077
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x78, 0x77, 0x66,
                //2078
                0x55, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x78, 0x77, 0x88, 0x77, 0x76,
                //2079
                0x55, 0x43, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2080
                0x55, 0x44, 0x55, 0x44, 0x45, 0x55, 0x67, 0x67, 0x77, 0x77, 0x66, 0x66,
                //2081
                0x54, 0x33, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x78, 0x76, 0x66,
                //2082
                0x55, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x76,
                //2083
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2084
                0x55, 0x44, 0x44, 0x44, 0x45, 0x55, 0x67, 0x67, 0x67, 0x77, 0x66, 0x66,
                //2085
                0x44, 0x33, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x78, 0x76, 0x66,
                //2086
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x76,
                //2087
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x77,
                //2088
                0x55, 0x44, 0x44, 0x44, 0x45, 0x45, 0x67, 0x67, 0x67, 0x77, 0x66, 0x66,
                //2089
                0x44, 0x33, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x78, 0x76, 0x66,
                //2090
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2091
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2092
                0x55, 0x44, 0x44, 0x44, 0x45, 0x45, 0x67, 0x67, 0x67, 0x77, 0x66, 0x66,
                //2093
                0x44, 0x33, 0x55, 0x44, 0x55, 0x55, 0x67, 0x77, 0x77, 0x77, 0x66, 0x66,
                //2094
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2095
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76,
                //2096
                0x55, 0x43, 0x44, 0x44, 0x45, 0x45, 0x67, 0x67, 0x67, 0x77, 0x66, 0x66,
                //2097
                0x44, 0x33, 0x55, 0x44, 0x55, 0x55, 0x67, 0x67, 0x77, 0x77, 0x66, 0x66,
                //2098
                0x54, 0x33, 0x55, 0x44, 0x55, 0x56, 0x67, 0x77, 0x77, 0x88, 0x77, 0x66,
                //2099
                0x55, 0x33, 0x55, 0x45, 0x56, 0x56, 0x77, 0x78, 0x78, 0x88, 0x77, 0x76
        };
    
    }
    
    

    相关文章

      网友评论

          本文标题:Java 求阴历(C++ 求阴历方法的转换)

          本文链接:https://www.haomeiwen.com/subject/cbtjjqtx.html