end;
if bLeap and (cnMonth = wLeap) then //是要闰月的吗?
DayCount := DayCount 30 - wLeapShift;
result := cstDateOrg DayCount cnDay - 1;
end;
//将日期显示成农历字符串.
function GregDateToCNStr(dtGreg:TDateTime):String;
const hzNumber:array[0..10] of string=(''''零'''',''''一'''',''''二'''',''''三'''',''''四'''',''''五'''',''''六'''',''''七'''',''''八'''',''''九'''',''''十'''');
function ConvertYMD(Number:Word;YMD:Word):string;
var
wTmp:word;
begin
result := '''''''';
if YMD = 1 then begin //年份
while Number > 0 do begin
result := hzNumber[Number Mod 10] result;
Number := Number DIV 10;
end;
Exit;
end;
if Number<=10 then begin //可只用1位
if YMD = 2 then //月份
result := hzNumber[Number]
else //天
result := ''''初'''' hzNumber[Number];
Exit;
end;
wTmp := Number Mod 10; //个位
if wTmp <> 0 then result := hzNumber[wTmp];
wTmp := Number Div 10; //十位
result:=''''十'''' result;
if wTmp > 1 then result := hzNumber[wTmp] result;
end;
var
cnYear,cnMonth,cnDay:word;
cnDate:TCNDate;
strLeap:string;
begin
cnDate:= DecodeGregToCNDate(dtGreg);
if cnDate = 0 then begin
result := ''''输入越界'''';
Exit;
end;
cnDay := cnDate and $1F;
cnMonth := (cnDate shr 5) and $F;
cnYear := (cnDate shr 9) and $FFF;
//测试第22位,为1表示闰月
if isCNLeap(cnDate) then strLeap:=''''(闰)'''' else strLeap := '''''''';
result := ''''农历'''' ConvertYMD(cnYear,1) ''''年'''' ConvertYMD(cnMonth,2) ''''月''''
strLeap ConvertYMD(cnDay,3) ;
end;
end.
////////////////////////// 应用 /////////////////////////////
uses CNYear;
procedure TForm1.Button1Click(Sender: TObject);
begin
edit1.text:=GregDateToCNStr(DateTimePicker1.date);
end;
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




