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

前言:本篇文章求阴历方法不同于 我截止目前看到的大部分 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
    };

}

LunarCalendar返回农历(阴历)日期的JAR包 根据指定日期计算对应农历日期(这个计算方法是网上找的,最初的作者是谁已经无法考证了,感谢网络资源吧!),本人封装成好用的JAR包后发不出来,供大家免费下载! toString()方法输出阴历日期(例如:癸巳年七月廿) getFullInfo()方法输出包括生肖在内的阴历日期(例如:癸巳年七月廿,生肖:蛇) 构建方法包括以下四种: public LunarCalendar(String year, String month, String date) public LunarCalendar(JComboBox jcYear, JComboBox jcMonth, JComboBox jcDate) public LunarCalendar(int year, int month, int date) public LunarCalendar(Calendar cal)) 使用前两种构建方法时,若文本内容不为数字,getErrorMessage会返回错误信息 方法摘要 java.lang.String getErrorMessage() 返回String类型的错误信息 java.lang.String getFullInfo() 返回String类型的详细阴历信息(例如:癸巳年七月廿,生肖:蛇) java.lang.String getLunarAnimal() 返回String类型的生肖(例如:蛇) java.lang.String getLunarDate() 返回String类型的阴历日期(例如:廿) java.lang.String getLunarMonth() 返回String类型的阴历月份(例如:七) java.lang.String getLunarYear() 返回String类型的阴历年份(天干地支,例如:癸巳) java.lang.String toString() 返回String类型的阴历日期(例如:癸巳年七月廿) JAR包名称:LunarCalendar version 1.0 8/26/2013 作者:Roy, Liu royliu90@live.cn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值