当系统设置日期格式为yyyy.MM.dd或yyyy/MM/dd时
strtodate('2011-01-01')出错怎么解决好呢

解决方案 »

  1.   


    DateSeparator := '-';
    StrToDate('2011-01-01');
      

  2.   

    procedure SetDateTimeFormat();
     var
     p:DWORD;
     begin
     SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,pchar('yyyy-MM-dd')); //设置短日期格式
     SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SLONGDATE,pchar('yyyy''年''M''月''d''日'')); //设置长日期格式为 yyyy'年'M'月'd'日',“年月日”字符必须用单引号括起来。Delphi字符串里必须用两个单引号。
     SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,pchar('H:mm:ss')); //设置时间格式,24小时制
     SendMessageTimeOut(HWND_BROADCAST,WM_SETTINGCHANGE,0,0,SMTO_ABORTIFHUNG,10,p);//设置完成后必须调用,通知其他程序格式已经更改,否则即使是程序自身也不能使用新设置的格式
     end;
      

  3.   

    呵呵,你可以利用TFormatSettings类呀.例如:procedure TForm1.btn1Click(Sender: TObject);
    var
     DateF:TFormatSettings;
     DateN:TDate;
    begin
      DateF.ShortDateFormat:='yyyy-mm-dd';//要转换的时间格式
      DateF.DateSeparator:='-';
      DateN:=StrToDate('2011-11-01',DateF);
    end;