delphi dateformat MM | дд | гг в мм / дд / гг ошибка - PullRequest
1 голос
/ 09 декабря 2011

Мне нужно преобразовать мою текущую дату в формате:

     MM|dd|yy     ---  12|09|11

Мне нужно преобразовать формат в:

     MM/dd/yy     --12/09/11

Текущий системный разделитель даты:

   -'|'

Я использую код как:

  var
     sDateOne : TDate ;
 begin
   Label1.Caption:=datetostr(now);              {this display as 12|09|11}
   ShortDateFormat:='MM/dd/yy';
   DateSeparator:='/';
   sDateOne:=StrToDate(Label1.Caption);
   FormatDateTime('MM/dd/yy',sDateOne );
   Label2.Caption:=datetostr(sDateOne);         {this i want as 12/09/11 }
 end;

, но получаю ошибку в строке sDateOne: = StrToDate (Label1.Caption);enter image description here

Скажите, пожалуйста, как преобразовать формат даты и отобразить его?

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

Вот исправленная версия вашего кода:

var
  DateOne: TDate;
  LocalFormatSettings: TFormatSettings;
begin
  Label1.Caption := datetostr(now);              {this display as 12|09|11}
  DateOne := StrToDate(Label1.Caption);
  GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, LocalFormatSettings);
  LocalFormatSettings.DateSeparator := '/';
  Label2.Caption := FormatDateTime('MM/dd/yy', DateOne, LocalFormatSettings); {this i want as 12/09/11 }
end;

Для получения информации GetLocaleFormatSettings см. http://delphi.about.com/library/rtl/blrtlGetLocaleFormatSettings.htm

1 голос
/ 09 декабря 2011

Если все, что вы делаете, это изменяете разделитель, а не порядок чисел, тогда вы можете просто использовать StringReplace(), например:

var
  S: String;

S := '12|09|11';
S := StringReplace(S, '|', '/', [rfReplaceAll]);
...