抛砖引玉了。
procedure TForm1.Button1Click(Sender: TObject);
var
A1,A2,A3:string;
begin
a3:='';
DateTimeToString(a2,'yyyymmdd',now());
a1:='零一二三四五六七八九十';
a3:=a3+copy(a1,strtoint(copy(a2,1,1))*2+1,2);
a3:=a3+copy(a1,strtoint(copy(a2,2,1))*2+1,2);
a3:=a3+copy(a1,strtoint(copy(a2,3,1))*2+1,2);
a3:=a3+copy(a1,strtoint(copy(a2,4,1))*2+1,2);
a3:=a3+'年';
if strtoint(copy(a2,5,1))>1 then
a3:=a3+copy(a1,strtoint(copy(a2,5,1))*2+1,2);
if strtoint(copy(a2,5,1))>=1 then
a3:=a3+copy(a1,21,2);
a3:=a3+copy(a1,strtoint(copy(a2,6,1))*2+1,2);
a3:=a3+'月';
if strtoint(copy(a2,7,1))>1 then
a3:=a3+copy(a1,strtoint(copy(a2,7,1))*2+1,2);
if strtoint(copy(a2,7,1))>=1 then
a3:=a3+copy(a1,21,2);
a3:=a3+copy(a1,strtoint(copy(a2,8,1))*2+1,2);
a3:=a3+'日';
self.Caption :=a3;end;

解决方案 »

  1.   

    修复了十,二十不能正确显示的问题。procedure TForm1.Button1Click(Sender: TObject);
    var
    A1,A2,A3:string;
    begin
    a3:='';
    DateTimeToString(a2,'yyyymmdd',now());
    a1:='零一二三四五六七八九十';
    a3:=a3+copy(a1,strtoint(copy(a2,1,1))*2+1,2);
    a3:=a3+copy(a1,strtoint(copy(a2,2,1))*2+1,2);
    a3:=a3+copy(a1,strtoint(copy(a2,3,1))*2+1,2);
    a3:=a3+copy(a1,strtoint(copy(a2,4,1))*2+1,2);
    a3:=a3+'年';
    if strtoint(copy(a2,5,1))>1 then
    a3:=a3+copy(a1,strtoint(copy(a2,5,1))*2+1,2);
    if strtoint(copy(a2,5,1))>=1 then
    a3:=a3+copy(a1,21,2);
    if strtoint(copy(a2,6,1))>0 then
    a3:=a3+copy(a1,strtoint(copy(a2,6,1))*2+1,2);
    a3:=a3+'月';
    if strtoint(copy(a2,7,1))>1 then
    a3:=a3+copy(a1,strtoint(copy(a2,7,1))*2+1,2);
    if strtoint(copy(a2,7,1))>=1 then
    a3:=a3+copy(a1,21,2);
    if strtoint(copy(a2,8,1))>0 then
    a3:=a3+copy(a1,strtoint(copy(a2,8,1))*2+1,2);
    a3:=a3+'日';
    self.Caption :=a3;end;