delphi dateformat MM | dd | yy到MM / dd / yy错误

问题描述 投票:1回答:2

我需要转换我当前的日期格式:

     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;

但是我在第二行输出错误:= StrToDate(Label1.Caption);

请告诉我如何转换日期格式并显示它?

delphi delphi-7 regional-settings
2个回答
4
投票

以下是您的代码的更正版本:

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
投票

如果你所做的只是更改分隔符,而不是数字的顺序,那么你可以简单地使用StringReplace(),例如:

var
  S: String;

S := '12|09|11';
S := StringReplace(S, '|', '/', [rfReplaceAll]);
© www.soinside.com 2019 - 2024. All rights reserved.