在DELPHI中没有直接将日期转化为汉语的形式用起来很不方便如年月日在一些特殊场合需要转化为汉语二○○一年五月二十三日 在这里有一个函数可以直接进行转化在这里和大家共享原代码如下 procedure datechange(var Dyear DmonthDday:string; const ADate:Tdatetime); //转化日期 function DCDate(ADate:TDateTime):TDDate;//将时间转化为汉字形式 function DCmonth(DMonth:string):string; //将月转化为汉字形式 function DCDay(DDay:string):string; //将日转化为汉字形式 function DCYear(Dyear:string):string; //将年转化为汉字形式 implementation //以下是实现部分 procedure datechange(var Dyear DmonthDday:string; const ADate:Tdatetime); begin Dyear:=formatdatetime(yyyyAdate); Dmonth:=formatdatetime(mmAdate); Dday:=formatdatetime(ddAdate); end; function TDWFDCDate(ADate: TDateTime):TDDate; var kk:TDdate; sYsMsD:string; begin datechange(sysmsdAdate); kkyear :=dcyear(sy); kkmonth :=DCmonth(sm); kkday:=DCday(sd); result:=kk; end; function TDWFDCDay(DDay: string): string; const CDDay:array[] of string=( 一二三四五六七八九十十一 十二十三十四十五十六十七十八十九 二十二十一二十二二十三二十四二十五二十六 二十七二十八二十九三十三十一); //日期的汉语表示 var dd:integer; begin dd:=strtoint(DDay); result:=cdday[dd]; end; function TDWFDCmonth(DMonth: string): string; const CDmonth:array[] of string=( 一二三四五六七八九十 十一十二); //月份的汉语表示 var dm:integer; begin dm:=strtoint(DMonth); result:=cDmonth[dm]; end; function TDWFDCYear(Dyear: string): string; const CDdigit:array[] of string=( ○一二三四五六七八九); //数字的汉字表示 var dhdgi:integer; sgsssbsq:string; Dtmp:string[]; begin dh:=length(Dyear); sg:=;ss:=;sb:=;sq:=; for i:= to dh do //i:= 及 i:=dh+ 时为开始标志为(#); begin dtmp:=Dyear[i]; dg:=strtoint(dtmp); case i of : sg:=cddigit[dg]; : ss:=cddigit[dg]; : sb:=cddigit[dg]; : sq:=cddigit[dg]; end; end; result :=sg+ss+sb+sq; end; 当然如果能将其嵌套在控件内的话将会更好如果大家有更好的方法的别忘了通知我 |