c: **:
/*------------
農曆轉換函式
-----------*/
char *getdayof(psystemtime pst);/*
地支名稱
*/const
char *cdizhi = ; /*
屬相名稱
*/const
char *cshuxiang = ; /*
農曆日期名
*/const
char
*cdayname = ; /*
農曆月份名
*/const
char *cmonname = ;
/*公曆每月前面的天數
*/const
int wmonthadd[12] = ; /*
農曆資料
*/const
intwnonglidata[100] = ;
static
int wcuryear,wcurmonth,wcurday;
static
int nthedate,nisend,m,k,n,i,nbit;
tchar sznongli[30], sznongliday[10],szshuxiang[10];
/*---
取當前公曆年、月、日
---*/
wcuryear = pst->wyear;
wcurmonth = pst->wmonth;
wcurday = pst->wday;
/*---
計算到初始時間
2023年2
月8日的天數:
1921-2-8(
正月初一
)---*/
nthedate = (wcuryear - 1921) * 365 + (wcuryear - 1921) / 4 + wcurday + wmonthadd[wcurmonth - 1] - 38;
if((!(wcuryear % 4)) && (wcurmonth > 2))
nthedate = nthedate + 1;
/*--
計算農曆天乾、地支、月、日
---*/
nisend = 0;
m = 0;
while(nisend != 1)
nthedate = nthedate - 29 - nbit;
n = n - 1;
}if(nisend)
m = m + 1;
}wcuryear = 1921 + m;
wcurmonth = k - n + 1;
wcurday = nthedate;
if (k == 12)
else
if (wcurmonth > wnonglidata[m] / 65536 + 1)
}/*--
生成農曆天乾、地支、屬相
==> wnongli--*/
wsprintf(szshuxiang,"%s",cshuxiang[((wcuryear - 4) % 60) % 12]);
wsprintf(sznongli,"%s(%s%s)
年",szshuxiang,ctiangan[((wcuryear - 4) % 60) %10],cdizhi[((wcuryear - 4) % 60) % 12]);
/*--
生成農曆月、日
==> wnongliday--*/
if (wcurmonth < 1)
else
strcat(sznongliday,"
月");
strcat(sznongliday,cdayname[wcurday]);
return
strcat(sznongli,sznongliday);
}objective-c **:
//農曆轉換函式
-(nsstring *)lunarforsolar:(nsdate *)solardate;
//農曆資料
const
intwnonglidata[100] = ;
static
int wcuryear,wcurmonth,wcurday;
static
int nthedate,nisend,m,k,n,i,nbit;
//取當前公曆年、月、日
nsdatecomponents
*components = [[
nscalendar
currentcalendar] components:nsdaycalendarunit|nsmonthcalendarunit| nsyearcalendarunitfromdate:solardate];
wcuryear = [components year];
wcurmonth = [components month];
wcurday = [components day];
//計算到初始時間2023年2月8日的天數:1921-2-8(正月初一)
nthedate = (wcuryear - 1921) * 365 + (wcuryear - 1921) / 4 + wcurday + wmonthadd[wcurmonth - 1] - 38;
if((!(wcuryear % 4)) && (wcurmonth > 2))
nthedate = nthedate + 1;
//計算農曆天乾、地支、月、日
nisend = 0;
m = 0;
while(nisend != 1)
nthedate = nthedate - 29 - nbit;
n = n - 1;
}if(nisend)
break;
m = m + 1;
}wcuryear = 1921 + m;
wcurmonth = k - n + 1;
wcurday = nthedate;
if (k == 12)
//生成農曆天乾、地支、屬相
nsstring *szshuxiang = (nsstring *)[cshuxiang objectatindex:((wcuryear - 4) % 60) % 12];
nsstring *sznongli = [nsstring
stringwithformat:@"%@(%@%@)
年",szshuxiang, (nsstring *)[ctianganobjectatindex:((wcuryear - 4) % 60) % 10],(nsstring *)[cdizhi objectatindex:((wcuryear - 4) % 60) %12]];
//生成農曆月、日
nsstring *sznongliday;
if (wcurmonth < 1)
else
nsstring *lunardate = [nsstring
stringwithformat:@"%@ %@
月%@",sznongli,sznongliday,(nsstring*)[cdayname objectatindex:wcurday]];
return lunardate;
}
公曆轉農曆
public string chineselunisolardate datetime adatatime 年月 甲乙丙丁戊己庚辛壬癸 year 4 10 子丑寅卯辰巳午未申酉戌亥 year 4 12 鼠牛虎兔龍蛇馬羊猴雞狗豬 year 4 12 month leapmonth 潤 無正二三四五六七...
公曆轉農曆函式
庫名 gton.h 程式by gshuang1 ifndef gton h 防止過載 define gton h uchar idata datenong 4 uchar code data1 公曆各個月的天數 uchar code days in a mon 2 12 uchar yearstyp...
儒略日轉公曆 以及 公曆轉儒略日(python版)
作為乙個測繪專業小碼農,經常需要儒略日,年積日,gps週秒等的時間轉換。寫了個小函式方便每次的轉換時間,利用的是列表形式 mjd2cal 函式是簡化儒略日計算公曆年月日時分秒,輸入簡化儒略日 含小數 返回年月日時分秒的一維列表。cal2mjd 函式將公曆年月日時分秒轉換到簡化儒略日,輸入年月日時分秒...