delphi显示阴阳日历
//显示阴阳日历
unit piOldDate;
interface
uses
SysUtils, Math;
function GetBit(m,n:Integer):Integer;
procedure e2c;
function GetcDateString:string;
function GetDateString:string;
var
CalendarData:Array[0..19] of Integer;
madd:Array[1..12] of Integer;
TheDate: TDateTime;
Year, Month, Day: Word;
tgString,dzString,numString,monString,weekString,sx:WideString;
cYear,cMonth,cDay:Integer;
implementation
function GetBit(m,n:Integer):Integer;
begin
Result:=(m shr n)and 1;
end;
procedure e2c;//阳历转换为阴历
var
total,m,n,k:Integer;
isEnd:Boolean;
tmp:Integer;
begin
isEnd:=false;
tmp:=Year;
if tmp<1900 then tmp:=tmp+1900;
total:=(tmp-2001)*365+Floor((tmp-2001) div 4)+madd[Month]+Day-23;
if (Year mod 4=0) and (Month>1) then Inc(total);
for m:=0 to 19 do
begin
if CalendarData[m]<
cMonth:=1-cMonth;
if cMonth>Floor(CalendarData[m] div $10000)+1 then
Dec(cMonth);
end;
end;
function GetcDateString:string;//阴历
var
tmp:string;
begin
tmp:='';
tmp:=tmp+copy(tgString,((cYear-4) mod 10)+1,1);//年干
tmp:=tmp+copy(dzString,((cYear-4) mod 12)+1,1);//年支
tmp:=tmp+'年(';
tmp:=tmp+copy(sx,((cYear-4) mod 12)+1,1);
tmp:=tmp+')';
if cMonth<1 then
begin
tmp:=tmp+'润';
tmp:=tmp+copy(monString,(-cMonth-1)+1,1);
end
else
tmp:=tmp+copy(monString,(cMonth-1)+1,1);
tmp:=tmp+'月';
if cDay<11 then
tmp:=tmp+'初'
else
begin
if cDay<20 then
tmp:=tmp+'十'
else
begin
if cDay<30 then
tmp:=tmp+'廿'
else
tmp:=tmp+'卅';
end;
end;
if (cDay mod 10<>0) or (cDay=10) then
tmp:=tmp+copy(numString,((cDay-1)mod 10)+1,1);
Result:=tmp;
end;
function GetDateString:string;//阳历
var
tmp:string;
t1:Integer;
begin
tmp:='';
t1:=Year;
if t1<1900 then t1:=t1+1900;
tmp:=tmp+IntToStr(t1)+'年'+IntToStr(Month)+'月'+IntToStr(Day)+' '+'星期'+copy(weekString,DayOfWeek(TheDate),1);
Result:=tmp;
end;
initialization//初始化参数
tgString:='甲乙丙丁戊己庚辛壬癸';
dzString:='子丑寅卯辰巳午未申酉戌亥';
numString:='一二三四五六七八九十';
monString:='正二三四五六七八九十冬腊';
weekString:='日一二三四五六';
sx:='鼠牛虎兔龙蛇马羊猴鸡狗猪';
CalendarData[0]:=
CalendarData[2]:=
CalendarData[4]:=
CalendarData[6]:=
CalendarData[8]:=
CalendarData[10]:=$B4A;
CalendarData[11]:=
CalendarData[13]:=$90AB5;
CalendarData[14]:=
CalendarData[16]:=$60A57;
CalendarData[17]:=
CalendarData[19]:=$40E95;
madd[1]:=0;
madd[2]:=31;
madd[3]:=59;
madd[4]:=90;
madd[5]:=120;
madd[6]:=151;
madd[7]:=181;
madd[8]:=212;
madd[9]:=243;
madd[10]:=273;
madd[11]:=304;
madd[12]:=334;
TheDate:=Date;
DecodeDate(TheDate,Year,Month,Day);
e2c;
{
Caption:=GetcDateString;得到阴历
Caption:=GetDateString;得到阳历
}
end.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了