<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 }
    ;

    ????
    // ======?傳回農(nóng)歷?y年的總天數(shù)
    ???? 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));
    ????}


    ????
    // ======?傳回農(nóng)歷?y年閏月的天數(shù)
    ???? 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 ;
    ????}


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


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


    ????
    // ======?傳回農(nóng)歷?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日對(duì)應(yīng)的農(nóng)歷.
    ?????*?yearCyl3:農(nóng)歷年與1864的相差數(shù)???????????????
    ?????*?monCyl4:從1900年1月31日以來(lái),閏月數(shù)
    ?????*?dayCyl5:與1900年1月31日相差的天數(shù),再加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日相差的天數(shù)
    ???????? int ?offset? = ?( int )?((cal.getTime().getTime()? - ?baseDate.getTime())? / ? 86400000L );
    ????????dayCyl?
    = ?offset? + ? 40 ;
    ????????monCyl?
    = ? 14 ;

    ????????
    // 用offset減去每農(nóng)歷年的天數(shù)
    ????????
    // ?計(jì)算當(dāng)天是農(nóng)歷第幾天
    ????????
    // i最終結(jié)果是農(nóng)歷的年份
    ????????
    // offset是當(dāng)年的第幾天
    ???????? 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 ;
    ????????}

    ????????
    // 農(nóng)歷年份
    ????????year? = ?iYear;

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

    ????????
    // 用當(dāng)年的天數(shù)offset,逐個(gè)減去每月(農(nóng)歷)的天數(shù),求出當(dāng)天是本月的第幾天
    ???????? 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時(shí),并且剛才計(jì)算的月份是閏月,要校正
    ???????? if ?(offset? == ? 0 ? && ?leapMonth? > ? 0 ? && ?iMonth? == ?leapMonth? + ? 1 )? {
    ????????????
    if ?(leap)? {
    ????????????????leap?
    = ? false ;
    ????????????}
    ? else ? {
    ????????????????leap?
    = ? true ;
    ????????????????
    -- iMonth;
    ????????????????
    -- monCyl;
    ????????????}

    ????????}

    ????????
    // offset小于0時(shí),也要校正
    ???????? 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(
    " 北京時(shí)間: " ? + ?chineseDateFormat.format(today.getTime())? + ? "  農(nóng)歷 " ? + ?lunar);
    ????}

    }
    ?

    posted on 2007-01-04 19:12 aaabbb 閱讀(2597) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): java
    主站蜘蛛池模板: 国产成人免费片在线观看| 4虎永免费最新永久免费地址| 中文字幕在线免费看线人| 暖暖免费在线中文日本| 最近中文字幕mv免费高清视频8| 无码人妻一区二区三区免费手机| 免费黄色一级毛片| 亚洲AV无码乱码精品国产| 亚洲欧洲日产国码无码久久99| 91亚洲一区二区在线观看不卡 | 国产精品亚洲精品日韩已方| 亚洲精品无码国产| 亚洲性无码av在线| 国产成人亚洲午夜电影| 国产午夜无码片免费| 91九色老熟女免费资源站| 在线免费观看污网站| 国产精品亚洲不卡一区二区三区| 久久久久亚洲AV成人片| 欧美激情综合亚洲一二区| 成人免费无码H在线观看不卡| 99热这里只有精品免费播放| 好吊妞998视频免费观看在线| 久久亚洲精品无码播放| 亚洲入口无毒网址你懂的| caoporn国产精品免费| 69国产精品视频免费| 免费人妻无码不卡中文字幕18禁| 亚洲日本精品一区二区| 亚洲av综合日韩| 久久综合给合久久国产免费| 日韩中文字幕免费| 亚洲av福利无码无一区二区 | 7777久久亚洲中文字幕蜜桃| 亚洲av永久无码一区二区三区| 三年片免费高清版| 成年女人午夜毛片免费看| 亚洲人成色7777在线观看| 亚洲日韩一中文字暮| 亚洲免费人成在线视频观看| 日韩毛片无码永久免费看|