字符串转换成时间类型。时间显示控件用的是datetimepicker,
目的是把每年的第一天显示在datetimepicker控件中:
 var 
   sdate:string;   sdate:=formatdatetime('yyyy',date);//取年,如2012
   sdate:=sdate+'-01-01'; //把上一步中取的年加上-01-01 即为每年的第一天,如 2012-01-01
   datetimepicker1.Date:=strtodate(sdate);//进行数据类型的转换,把字符串类型转换成时间类型运行时给出的错误提示是: ‘2012-01-01’ is not a valid date and time .请问我这样处理有问题吗?哪里的问题?另外还有好的办法吗?请详细解释,谢谢。 

解决方案 »

  1.   

    补充:同一程序在XP和Windows 2003 下都没问题,但是在2008下运行就出现该错误提示。
      

  2.   

    uses DateUtils;
    StartOfTheYear
      

  3.   


    study
      

  4.   

    将控制面板中时间区域选择的短日期格式改为yyyy-mm-dd,也可在delphi中调 用相关api直接修改。
      

  5.   


    var
      vFormatSettings: TFormatSettings;
    begin
      with vFormatSettings do
      begin
        CurrencyString := '';
        CurrencyFormat := 0;
        NegCurrFormat := 0;
        ThousandSeparator := ',';
        DecimalSeparator := '.';
        CurrencyDecimals := 0;
        DateSeparator := '-';      //日期分隔符
        ShortDateFormat := 'yyyy-mm-dd';
        LongDateFormat := 'yyyy-mm-dd';
        TimeSeparator := ':';      //时间分隔符
        TimeAMString := 'am';
        TimePMString := 'pm';
        ShortTimeFormat := 'hh:mm' ;
        LongTimeFormat := 'hh:mm:ss';
        ListSeparator := ',';
      end;
      Result := Sysutils.StrToDateTime(S, vFormatSettings);
    end;
      

  6.   

    在工程文件中加上这个就可以了。按你自己的需求设置ShortDataFormat格式。
        Application.Initialize;  DateSeparator := '-';
      ShortDateFormat := 'yyyy-MM-dd';
      Application.UpdateFormatSettings := False;