首页 | 社区 | 博客 | 招聘 | 文章 | 新闻 | 下载 | 读书 | 代码
亲,您未登录哦! 登录 | 注册

将日期转化为汉语的形式

打印文章

分享到:
在DELPHI中没有直接将日期转化为汉语的形式,用起来很不方便,如:“2001年5月23日”在一些特殊场合需要转化为汉语,“二○○一年五月二十三日”
    在这里有一个函数可以直接进行转化,在这里和大家共享,原代码如下:
  
procedure datechange(var Dyear, Dmonth,Dday: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, Dmonth,Dday:string;
   const ADate:Tdatetime);
begin
  Dyear:=formatdatetime('yyyy',Adate);
  Dmonth:=formatdatetime('mm',Adate);
  Dday:=formatdatetime('dd',Adate);        
end;

function TDWF.DCDate(ADate: TDateTime):TDDate;
var  kk:TDdate;
     sY,sM,sD:string;
begin
  datechange(sy,sm,sd,Adate);
  kk.year :=dcyear(sy);  
  kk.month :=DCmonth(sm);     
  kk.day:=DCday(sd);
  result:=kk;
end;

function TDWF.DCDay(DDay: string): string;
const  CDDay:array[1..31] of string=(
        '一','二','三','四','五','六','七','八','九','十','十一',
          '十二','十三','十四','十五','十六','十七','十八','十九',
        '二十','二十一','二十二','二十三','二十四','二十五','二十六',
           '二十七','二十八','二十九','三十','三十一'); //日期的汉语表示
var dd:integer;
begin
dd:=strtoint(DDay);   
result:=cdday[dd];
end;

function TDWF.DCmonth(DMonth: string): string;
const   CDmonth:array[1..12] of string=(
        '一','二','三','四','五','六','七','八','九','十',
             '十一','十二');                            //月份的汉语表示
var dm:integer;
begin
dm:=strtoint(DMonth);   
result:=cDmonth[dm];
end;

function TDWF.DCYear(Dyear: string): string;
const  CDdigit:array[0..9] of string=(
       '○','一','二','三','四','五','六','七','八','九'); //数字的汉字表示
var     dh,dg,i:integer;   
         sg,ss,sb,sq:string;
         Dtmp:string[4];
begin
  dh:=length(Dyear);
  sg:='';ss:='';sb:='';sq:='';
  for i:=1 to dh do      //i:=0 及 i:=dh+1 时,为开始标志为(#0);
  begin
    dtmp:=Dyear[i];
    dg:=strtoint(dtmp);
    case i of
      1:  sg:=cddigit[dg];
      2:  ss:=cddigit[dg];
      3:  sb:=cddigit[dg];
      4:  sq:=cddigit[dg];
    end;
  end;
  result :=sg+ss+sb+sq;
end;

当然如果能将其嵌套在控件内的话将会更好,如果大家有更好的方法的别忘了通知我。

本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )

编程爱好者论坛

本栏最新文章