農曆和陽曆的之間的轉換

2021-10-09 20:12:31 字數 3822 閱讀 8151

1.首先拷貝這兩個實體類

@data

public

class

lunar

@data

public

class

solar

2.然後考入下面的類

/**

* 農曆和陽曆的互相轉換

* @author hj

* @date 2020/9/11

*/public

class

lauarutil

;private

static

int[

] solar_1_1 =

;private

static

intgetbitint

(int data,

int length,

int shift)

private

static

long

solartoint

(int y,

int m,

int d)

/** *

* @param lunaryear

* 農曆年份

* @return string of ganzhi: 甲子年 tiangan:甲乙丙丁戊己庚辛壬癸

* dizhi: 子丑寅卯辰巳無為申酉戌亥

*/public

static string lunaryeartoganzhi

(int lunaryear)

;final string[

] dizhi =

;return tiangan[

(lunaryear -4)

%10]+ dizhi[

(lunaryear -4)

%12]+

"年";

}private

static solar solarfromint

(long g)

long mi =

(100

* ddd +52)

/3060

;long mm =

(mi +2)

%12+1

; y = y +

(mi +2)

/12;long dd = ddd -

(mi *

306+5)

/10+1

; solar solar =

newsolar()

; solar.

setsolaryear((

int) y)

; solar.

setsolarmonth((

int) mm)

; solar.

setsolarday((

int) dd)

;return solar;

}/**

* 農曆轉公曆

*/public

static solar lunartosolar

(lunar lunar)

else

}for

(int i =

0; i < loopend; i++

) offset += lunar.

getlunarday()

;int solar11 = solar_1_1[lunar.

getlunaryear()

- solar_1_1[0]

];int y =

getbitint

(solar11,12,

9);int m =

getbitint

(solar11,4,

5);int d =

getbitint

(solar11,5,

0);return

solarfromint

(solartoint

(y, m, d)

+ offset -1)

;}/** * 公曆轉農曆

*/public

static lunar solartolunar

(solar solar)

solar11 = solar_1_1[index]

;int y =

getbitint

(solar11,12,

9);int m =

getbitint

(solar11,4,

5);int d =

getbitint

(solar11,5,

0);long offset =

solartoint

(solar.

getsolaryear()

, solar.

getsolarmonth()

, solar.

getsolarday()

)-solartoint

(y, m, d)

;int days = lunar_month_days[index]

;int leap =

getbitint

(days,4,

13);int lunary = index + solar_1_1[0]

;int lunarm =1;

int lunard =1;

offset +=1;

for(

int i =

0; i <

13; i++

)else

} lunard =

(int

)(offset)

; lunar.

setlunaryear

(lunary)

; lunar.

setlunarmonth

(lunarm)

; lunar.

setisleap

(false);

if(leap !=

0&& lunarm > leap)

} lunar.

setlunarday

(lunard)

;return lunar;

}/**

* 得到當前時間的農曆

* @param

* @return void

* @author hj

* @date 2020/9/11

*/public

static string getcurrentlunardatemmdd()

elseif(

"0".

equals

(yyyymmdd.

substring(6

,7))

)else

lunar lunar = lauarutil.

solartolunar

(solar)

; stringbuilder sb =

newstringbuilder()

;if(lunar.

getlunarmonth()

<10)

else

if(lunar.

getlunarday()

<10)

else

return sb.

tostring()

;}}

只提供了公共的一些方法,和當前時間的農曆與陽曆之間的轉換,其他的方法請根據自己的需要自行封裝。

python實現農曆和陽曆日期轉換

需安裝sxtwl包,命令如下 pip install sxtwl 農曆 lunar calendar 陽曆 solar calendar 轉換 如下 基於python3 import sxtwl 日曆中文索引 ymc u 十一 u 十二 u 正 u 二 u 三 u 四 u 五 u 六 u 七 u 八...

農曆與陽曆的對照

此程式在 ie4 以後的版本才能執行 國際換日線 薩摩亞夏威夷 阿拉斯加 太平洋美國山區 美加山區 加拿大中部 墨西哥美加中部 南美洲太平洋 美加東部 美東南美洲西部 大西洋紐芬蘭 東南美洲 南美洲東部 大西洋中部 亞速爾英國夏令 格林威治標準 羅馬中歐 西歐以色列 東歐埃及 gft南非 沙地阿拉伯...

PHP實現陽曆到農曆轉換的類例項

複製 如下 php陽曆到農曆轉換的乙個類 class calendar 再加當年的幾個月 switch cmonth 如果當年是閏年還要加一天 if cyear 4 0 and cmonth 2 total cday 1 nbwww.cppcns.comsp 用農曆的天數累加來判斷是否超過陽曆的天數...