怎样将数字的年月日转换成文字的年月日?????
例如:2002-05-06   要转换成  贰零零贰年伍月陆日
要怎么办?

解决方案 »

  1.   

    先用DECODEDATE,得到年、月、日。
    再逐个替换/
      

  2.   

    定义数组存放中文字符从0-31
    用StrToInt(DateTime->FormateString("yyyy")),StrToInt(DateTime->FormateString("m")),StrToInt(DateTime->FormateString("d"))取年、月、日;年份是一个一个数字来取,月和日直接取就行了。
      

  3.   

    function GetCaptialDate(ADate :TDateTime) :string;
    Const
      CAPTIALLETTER :array[0..9] of string = ('零', '壹', '贰', '叁', '肆',
                                              '伍', '陆', '柒', '捌', '玖') ;
    var
      iYear, iMonth, iDay :WORD ;
      iTmp :integer;
      sStr :string ;
    begin
      DeCodeDate(ADate, iYear, iMonth, iDay) ;  sStr := '' ;
      //转换年
      //千位
      iYear := iYear mod 10000 ;   //只考虑千位的年份
      iTmp := iYear div 1000 ;
      sStr := CAPTIALLETTER[iTmp] ;  //百位
      iYear := iYear mod 1000 ;
      iTmp := iYear div 100 ;
      sStr := sStr + CAPTIALLETTER[iTmp] ;  //十位
      iYear := iYear mod 100 ;
      iTmp := iYear div 10 ;
      sStr := sStr + CAPTIALLETTER[iTmp] ;  //个位
      iYear := iYear mod 10 ;
      iTmp := iYear div 1 ;
      sStr := sStr + CAPTIALLETTER[iTmp] + '年';  //转换月
      //十位
      iTmp := iMonth div 10 ;
      if iTmp <> 0 then sStr := sStr + CAPTIALLETTER[iTmp] + '拾';  //个位
      iMonth := iMonth mod 10 ;
      iTmp := iMonth div 1 ;
      sStr := sStr + CAPTIALLETTER[iTmp] + '月';  //转换日
      //十位
      iTmp := iDay div 10 ;
      if iTmp <> 0 then sStr := sStr + CAPTIALLETTER[iTmp] + '拾';  //个位
      iDay := iDay mod 10 ;
      iTmp := iDay div 1 ;
      sStr := sStr + CAPTIALLETTER[iTmp] + '日';  Result := trim(sStr) ;
    end;可能不完全合你的要求,你再改改。
      

  4.   

    不好意思,有些BUGfunction GetCaptialDate(ADate :TDateTime) :string;
    Const
      CAPTIALLETTER :array[0..9] of string = ('零', '壹', '贰', '叁', '肆',
                                              '伍', '陆', '柒', '捌', '玖') ;
    var
      iYear, iMonth, iDay :WORD ;
      iTmp :integer;
      sStr :string ;
    begin
      DeCodeDate(ADate, iYear, iMonth, iDay) ;  sStr := '' ;
      //转换年
      //千位
      iYear := iYear mod 10000 ;   //只考虑千位的年份
      iTmp := iYear div 1000 ;
      sStr := CAPTIALLETTER[iTmp] ;  //百位
      iYear := iYear mod 1000 ;
      iTmp := iYear div 100 ;
      sStr := sStr + CAPTIALLETTER[iTmp] ;  //十位
      iYear := iYear mod 100 ;
      iTmp := iYear div 10 ;
      sStr := sStr + CAPTIALLETTER[iTmp] ;  //个位
      iYear := iYear mod 10 ;
      iTmp := iYear div 1 ;
      sStr := sStr + CAPTIALLETTER[iTmp] + '年';  //转换月
      //十位
      iTmp := iMonth div 10 ;
      if iTmp > 0 then
      begin
        if iTmp = 1 then
          sStr := sStr + '拾'
        else
          sStr := sStr + CAPTIALLETTER[iTmp] + '拾' ;
      end ;  //个位
      iMonth := iMonth mod 10 ;
      iTmp := iMonth div 1 ;
      if iTmp <> 0 then         //added 021106
        sStr := sStr + CAPTIALLETTER[iTmp];
      sStr := sStr + '月' ;  //转换日
      //十位
      iTmp := iDay div 10 ;
      if iTmp > 0 then
      begin
        if iTmp = 1 then
          sStr := sStr + '拾'
        else
          sStr := sStr + CAPTIALLETTER[iTmp] + '拾';
      end ;  //个位
      iDay := iDay mod 10 ;
      iTmp := iDay div 1 ;
      if iTmp <> 0 then         //added 021106
        sStr := sStr + CAPTIALLETTER[iTmp];
      sStr := sStr + '日' ;  Result := trim(sStr) ;
    end;