<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 38,  comments - 22,  trackbacks - 0
    import ?java.text.ParseException;
    import ?java.text.SimpleDateFormat;
    import ?java.util.Calendar;
    import ?java.util.Date;

    public ? class ?Lunar? {
    ????
    private ? int ?year;
    ????
    private ? int ?month;
    ????
    private ? int ?day;
    ????
    private ? boolean ?leap;
    ????
    final ? static ?String?chineseNumber[]? = ? { " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " 十一 " ,? " 十二 " } ;
    ????
    static ?SimpleDateFormat?chineseDateFormat? = ? new ?SimpleDateFormat( " yyyy年MM月dd日 " );
    ????
    final ? static ? long []?lunarInfo? = ? new ? long []
    ????
    { 0x04bd8 ,? 0x04ae0 ,? 0x0a570 ,? 0x054d5 ,? 0x0d260 ,? 0x0d950 ,? 0x16554 ,? 0x056a0 ,? 0x09ad0 ,? 0x055d2 ,
    ?????
    0x04ae0 ,? 0x0a5b6 ,? 0x0a4d0 ,? 0x0d250 ,? 0x1d255 ,? 0x0b540 ,? 0x0d6a0 ,? 0x0ada2 ,? 0x095b0 ,? 0x14977 ,
    ?????
    0x04970 ,? 0x0a4b0 ,? 0x0b4b5 ,? 0x06a50 ,? 0x06d40 ,? 0x1ab54 ,? 0x02b60 ,? 0x09570 ,? 0x052f2 ,? 0x04970 ,
    ?????
    0x06566 ,? 0x0d4a0 ,? 0x0ea50 ,? 0x06e95 ,? 0x05ad0 ,? 0x02b60 ,? 0x186e3 ,? 0x092e0 ,? 0x1c8d7 ,? 0x0c950 ,
    ?????
    0x0d4a0 ,? 0x1d8a6 ,? 0x0b550 ,? 0x056a0 ,? 0x1a5b4 ,? 0x025d0 ,? 0x092d0 ,? 0x0d2b2 ,? 0x0a950 ,? 0x0b557 ,
    ?????
    0x06ca0 ,? 0x0b550 ,? 0x15355 ,? 0x04da0 ,? 0x0a5d0 ,? 0x14573 ,? 0x052d0 ,? 0x0a9a8 ,? 0x0e950 ,? 0x06aa0 ,
    ?????
    0x0aea6 ,? 0x0ab50 ,? 0x04b60 ,? 0x0aae4 ,? 0x0a570 ,? 0x05260 ,? 0x0f263 ,? 0x0d950 ,? 0x05b57 ,? 0x056a0 ,
    ?????
    0x096d0 ,? 0x04dd5 ,? 0x04ad0 ,? 0x0a4d0 ,? 0x0d4d4 ,? 0x0d250 ,? 0x0d558 ,? 0x0b540 ,? 0x0b5a0 ,? 0x195a6 ,
    ?????
    0x095b0 ,? 0x049b0 ,? 0x0a974 ,? 0x0a4b0 ,? 0x0b27a ,? 0x06a50 ,? 0x06d40 ,? 0x0af46 ,? 0x0ab60 ,? 0x09570 ,
    ?????
    0x04af5 ,? 0x04970 ,? 0x064b0 ,? 0x074a3 ,? 0x0ea50 ,? 0x06b58 ,? 0x055c0 ,? 0x0ab60 ,? 0x096d5 ,? 0x092e0 ,
    ?????
    0x0c960 ,? 0x0d954 ,? 0x0d4a0 ,? 0x0da50 ,? 0x07552 ,? 0x056a0 ,? 0x0abb7 ,? 0x025d0 ,? 0x092d0 ,? 0x0cab5 ,
    ?????
    0x0a950 ,? 0x0b4a0 ,? 0x0baa4 ,? 0x0ad50 ,? 0x055d9 ,? 0x04ba0 ,? 0x0a5b0 ,? 0x15176 ,? 0x052b0 ,? 0x0a930 ,
    ?????
    0x07954 ,? 0x06aa0 ,? 0x0ad50 ,? 0x05b52 ,? 0x04b60 ,? 0x0a6e6 ,? 0x0a4e0 ,? 0x0d260 ,? 0x0ea65 ,? 0x0d530 ,
    ?????
    0x05aa0 ,? 0x076a3 ,? 0x096d0 ,? 0x04bd7 ,? 0x04ad0 ,? 0x0a4d0 ,? 0x1d0b6 ,? 0x0d250 ,? 0x0d520 ,? 0x0dd45 ,
    ?????
    0x0b5a0 ,? 0x056d0 ,? 0x055b2 ,? 0x049b0 ,? 0x0a577 ,? 0x0a4b0 ,? 0x0aa50 ,? 0x1b255 ,? 0x06d20 ,? 0x0ada0 }
    ;

    ????
    // ======?傳回農歷?y年的總天數
    ???? final ? private ? static ? int ?yearDays( int ?y)? {
    ????????
    int ?i,?sum? = ? 348 ;
    ????????
    for ?(i? = ? 0x8000 ;?i? > ? 0x8 ;?i? >>= ? 1 )? {
    ????????????
    if ?((lunarInfo[y? - ? 1900 ]? & ?i)? != ? 0 )?sum? += ? 1 ;
    ????????}

    ????????
    return ?(sum? + ?leapDays(y));
    ????}


    ????
    // ======?傳回農歷?y年閏月的天數
    ???? final ? private ? static ? int ?leapDays( int ?y)? {
    ????????
    if ?(leapMonth(y)? != ? 0 )? {
    ????????????
    if ?((lunarInfo[y? - ? 1900 ]? & ? 0x10000 )? != ? 0 )
    ????????????????
    return ? 30 ;
    ????????????
    else
    ????????????????
    return ? 29 ;
    ????????}
    ? else
    ????????????
    return ? 0 ;
    ????}


    ????
    // ======?傳回農歷?y年閏哪個月?1-12?,?沒閏傳回?0
    ???? final ? private ? static ? int ?leapMonth( int ?y)? {
    ????????
    return ?( int )?(lunarInfo[y? - ? 1900 ]? & ? 0xf );
    ????}


    ????
    // ======?傳回農歷?y年m月的總天數
    ???? final ? private ? static ? int ?monthDays( int ?y,? int ?m)? {
    ????????
    if ?((lunarInfo[y? - ? 1900 ]? & ?( 0x10000 ? >> ?m))? == ? 0 )
    ????????????
    return ? 29 ;
    ????????
    else
    ????????????
    return ? 30 ;
    ????}


    ????
    // ======?傳回農歷?y年的生肖
    ???? final ? public ?String?animalsYear()? {
    ????????
    final ?String[]?Animals? = ? new ?String[] { " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " } ;
    ????????
    return ?Animals[(year? - ? 4 )? % ? 12 ];
    ????}


    ????
    // ======?傳入?月日的offset?傳回干支,?0=甲子
    ???? final ? private ? static ?String?cyclicalm( int ?num)? {
    ????????
    final ?String[]?Gan? = ? new ?String[] { " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " } ;
    ????????
    final ?String[]?Zhi? = ? new ?String[] { " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " ,? " " } ;
    ????????
    return ?(Gan[num? % ? 10 ]? + ?Zhi[num? % ? 12 ]);
    ????}


    ????
    // ======?傳入?offset?傳回干支,?0=甲子
    ???? final ? public ?String?cyclical()? {
    ????????
    int ?num? = ?year? - ? 1900 ? + ? 36 ;
    ????????
    return ?(cyclicalm(num));
    ????}


    ????
    /**
    ?????*?傳出y年m月d日對應的農歷.
    ?????*?yearCyl3:農歷年與1864的相差數???????????????
    ?????*?monCyl4:從1900年1月31日以來,閏月數
    ?????*?dayCyl5:與1900年1月31日相差的天數,再加40???????
    ?????*?
    @param ?cal?
    ?????*?
    @return ?
    ?????
    */

    ????
    public ?Lunar(Calendar?cal)? {
    ????????@SuppressWarnings(
    " unused " )? int ?yearCyl,?monCyl,?dayCyl;
    ????????
    int ?leapMonth? = ? 0 ;
    ????????Date?baseDate?
    = ? null ;
    ????????
    try ? {
    ????????????baseDate?
    = ?chineseDateFormat.parse( " 1900年1月31日 " );
    ????????}
    ? catch ?(ParseException?e)? {
    ????????????e.printStackTrace();??
    // To?change?body?of?catch?statement?use?Options?|?File?Templates.
    ????????}


    ????????
    // 求出和1900年1月31日相差的天數
    ???????? int ?offset? = ?( int )?((cal.getTime().getTime()? - ?baseDate.getTime())? / ? 86400000L );
    ????????dayCyl?
    = ?offset? + ? 40 ;
    ????????monCyl?
    = ? 14 ;

    ????????
    // 用offset減去每農歷年的天數
    ????????
    // ?計算當天是農歷第幾天
    ????????
    // i最終結果是農歷的年份
    ????????
    // offset是當年的第幾天
    ???????? int ?iYear,?daysOfYear? = ? 0 ;
    ????????
    for ?(iYear? = ? 1900 ;?iYear? < ? 2050 ? && ?offset? > ? 0 ;?iYear ++ )? {
    ????????????daysOfYear?
    = ?yearDays(iYear);
    ????????????offset?
    -= ?daysOfYear;
    ????????????monCyl?
    += ? 12 ;
    ????????}

    ????????
    if ?(offset? < ? 0 )? {
    ????????????offset?
    += ?daysOfYear;
    ????????????iYear
    -- ;
    ????????????monCyl?
    -= ? 12 ;
    ????????}

    ????????
    // 農歷年份
    ????????year? = ?iYear;

    ????????yearCyl?
    = ?iYear? - ? 1864 ;
    ????????leapMonth?
    = ?leapMonth(iYear);? // 閏哪個月,1-12
    ????????leap? = ? false ;

    ????????
    // 用當年的天數offset,逐個減去每月(農歷)的天數,求出當天是本月的第幾天
    ???????? int ?iMonth,?daysOfMonth? = ? 0 ;
    ????????
    for ?(iMonth? = ? 1 ;?iMonth? < ? 13 ? && ?offset? > ? 0 ;?iMonth ++ )? {
    ????????????
    // 閏月
    ???????????? if ?(leapMonth? > ? 0 ? && ?iMonth? == ?(leapMonth? + ? 1 )? && ? ! leap)? {
    ????????????????
    -- iMonth;
    ????????????????leap?
    = ? true ;
    ????????????????daysOfMonth?
    = ?leapDays(year);
    ????????????}
    ? else
    ????????????????daysOfMonth?
    = ?monthDays(year,?iMonth);

    ????????????offset?
    -= ?daysOfMonth;
    ????????????
    // 解除閏月
    ???????????? if ?(leap? && ?iMonth? == ?(leapMonth? + ? 1 ))?leap? = ? false ;
    ????????????
    if ?( ! leap)?monCyl ++ ;
    ????????}

    ????????
    // offset為0時,并且剛才計算的月份是閏月,要校正
    ???????? if ?(offset? == ? 0 ? && ?leapMonth? > ? 0 ? && ?iMonth? == ?leapMonth? + ? 1 )? {
    ????????????
    if ?(leap)? {
    ????????????????leap?
    = ? false ;
    ????????????}
    ? else ? {
    ????????????????leap?
    = ? true ;
    ????????????????
    -- iMonth;
    ????????????????
    -- monCyl;
    ????????????}

    ????????}

    ????????
    // offset小于0時,也要校正
    ???????? if ?(offset? < ? 0 )? {
    ????????????offset?
    += ?daysOfMonth;
    ????????????
    -- iMonth;
    ????????????
    -- monCyl;
    ????????}

    ????????month?
    = ?iMonth;
    ????????day?
    = ?offset? + ? 1 ;
    ????}


    ????
    public ? static ?String?getChinaDayString( int ?day)? {
    ????????String?chineseTen[]?
    = ? { " " ,? " " ,? " 廿 " ,? " " } ;
    ????????
    int ?n? = ?day? % ? 10 ? == ? 0 ? ? ? 9 ?:?day? % ? 10 ? - ? 1 ;
    ????????
    if ?(day? > ? 30 )
    ????????????
    return ? "" ;
    ????????
    if ?(day? == ? 10 )
    ????????????
    return ? " 初十 " ;
    ????????
    else
    ????????????
    return ?chineseTen[day? / ? 10 ]? + ?chineseNumber[n];
    ????}


    ????
    public ?String?toString()? {
    ????????
    return ?year? + ? " " ? + ?(leap? ? ? " " ?:? "" )? + ?chineseNumber[month? - ? 1 ]? + ? " " ? + ?getChinaDayString(day);
    ????}


    ????
    public ? static ? void ?main(String[]?args)? throws ?ParseException? {
    ????????Calendar?today?
    = ?Calendar.getInstance();
    ????????today.setTime(chineseDateFormat.parse(
    " 2003年1月1日 " ));
    ????????Lunar?lunar?
    = ? new ?Lunar(today);

    ????????System.out.println(
    " 北京時間: " ? + ?chineseDateFormat.format(today.getTime())? + ? "  農歷 " ? + ?lunar);
    ????}

    }
    ?

    posted on 2007-01-04 19:12 aaabbb 閱讀(2596) 評論(3)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 69av免费视频| 亚洲依依成人亚洲社区| 添bbb免费观看高清视频| 在线免费观看一级片| 国产亚洲精品影视在线| 成年女人午夜毛片免费视频| 亚洲国产中文在线视频| 成人免费毛片内射美女-百度| 亚洲国产成人精品无码区在线网站| 日本免费xxxx| 亚洲一级免费视频| 大学生a级毛片免费观看| 国产精品亚洲一区二区在线观看| 在线观看亚洲免费视频| 人人公开免费超级碰碰碰视频| 久久久久亚洲精品男人的天堂| 久久精品无码专区免费| 国产AV无码专区亚洲Av| 久久国产高潮流白浆免费观看| 亚洲欧洲日产韩国在线| 免费无码黄动漫在线观看| 全部在线播放免费毛片| 日韩亚洲一区二区三区| 91麻豆国产免费观看| 国产精品亚洲综合五月天| 国产成人免费片在线观看| 国产乱子伦精品免费视频| 亚洲色图在线观看| 在线看片人成视频免费无遮挡| 黄色片网站在线免费观看| 国产亚洲精品xxx| 中国在线观看免费高清完整版| 国产大陆亚洲精品国产| 亚洲老妈激情一区二区三区| 青青视频观看免费99| 九九久久精品国产免费看小说| 久久精品国产亚洲AV麻豆不卡| 毛片免费视频在线观看| 国产日韩AV免费无码一区二区三区 | 久久精品国产亚洲av麻豆| 欧美a级在线现免费观看|