S := FormatDateTime('"The meeting is on " dddd, mmmm d, yyyy, " at " hh:mm AM/PM', Now + 0.125);

解决方案 »

  1.   

    不管windows的日期設定如何我都希望d_date的值為<2002/01/29 08:31:55>的時間值
      

  2.   

    试一试这样
    var
      text1:string;
      d_date:Tdatetime;
    begin
      text1:='20020129083155';
      try
        ShortDateFormat := 'yyyy/mm/dd';
        LongDateFormat := 'yyyy/mm/dd';
        ShortTimeFormat := 'hh:mm:ss';
        LongTimeFormat := 'hh:mm:ss';
        DateSeparator:='/';
        TimeSeparator:=':';
        d_date:=strToDatetime(copy(text1,1,4)+'/'+copy(text1,5,2)+'/'
                +copy(text1,7,2)+' '+copy(text1,9,2)+':'+copy(text1,11,2)
                +':'+copy(text1,13,2));
      except
        showmessage('錯誤1');
      end;
    end;
      

  3.   

    由于系统的设置会将TDateTime的结构发生变化所有要在程序中知道当前的日期格式设置
    可以通过下列程序得到当前日期的格式
    type
      TDateOrder = (doMDY, doDMY, doYMD);function GetDateOrder(const DateFormat: string): TDateOrder;
    var
      I: Integer;
    begin
      Result := doMDY;
      I := 1;
      while I <= Length(DateFormat) do
      begin
        case Chr(Ord(DateFormat[I]) and $DF) of
          'E': Result := doYMD;
          'Y': Result := doYMD;
          'M': Result := doMDY;
          'D': Result := doDMY;
        else
          Inc(I);
          Continue;
        end;
        Exit;
      end;
      Result := doMDY;
    end;
    然后就能再程序中调用了
    procedure TForm1.BitBtn1Click(Sender: TObject);
    var
      dDate:TDateTime;
      DateOrder: TDateOrder;
    begin
      //ShowMessage(IntToStr(Trunc(-1.8)));
      DateOrder := GetDateOrder(ShortDateFormat);
      case DateOrder of
        doMDY:  dDate:=StrToDate('1-31-2000');
        doDMY:  dDate:=StrToDate('31-1-2000');
        doYMD:  dDate:=StrToDate('2000-1-31');
      end;
    end;
      

  4.   

    看一下这个,希望对你有帮助:
    var
       DateTime,MyDate,MyTime : TDateTime;
       DateStr,TimeStr:string;
    begin
       DateTime := Now;                     //返回当前日期时间
       DateStr:= DateToStr(DateTime);   //转换日期为字符串 ,例如:01/08/96
       TimeStr := TimeToStr(DateTime);   //转换时间为字符串,例如:20:50
      MyDate:= StrToDate(DateStr); //转换字符串为日期
      MyTime:= StrToTime(TimeStr); //转换字符串为时间
      DateTime:= MyDate + MyTime; //相加得到datetime
      DateTime   := DateTime + (15/60/24);//加15分钟  DateStr:= FormatDateTime('yyyy-mmmm-dd',MyDate);  {1996-January-08}
      DateStr:= FormatDateTime('mmm,d,yy,ddd',MyDate);  {Jan,8,96,Mon}
      DateStr:= FormatDateTime('dddd/dd/mm/yy',MyDate); {Monday/08/01/96}  TimeStr:= FormatDateTime('t',MyTime);             {10:50 PM}
      TimeStr:= FormatDateTime('tt',MyTime);            {10:50:00 PM}
      TimeStr:= FormatDateTime('hh-nn-ss-a/p',MyTime);  {10-50-00-p}
    end; 
    ////////////////////////////////////////////
    begin
     try                  {编码年月日为TDateTime}
      DateTime := EncodeDate(YearStr, MonthStr,DayStr);
     except                                   
      on EConvertError do ....
     end; DOW := DayOfWeek(DateTime);                   获得星期几的信息
     case DOW of                          
       1 :  WeekStr:= '星期天';      
       ......
      7:WeekStr:='星期六'
     end;