手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

中国农历算法(delphi)

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!