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 用農曆的天數累加來判斷是否超過陽曆的天數...