【问题标题】:delphi dateformat MM|dd|yy to MM/dd/yy errordelphi dateformat MM|dd|yy 到 MM/dd/yy 错误
【发布时间】:2023-03-09 13:40:02
【问题描述】:

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

     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); 行收到错误

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

【问题讨论】:

  • 请注意,系统区域设置信息可能由用户设置,以使用完全不同的输出作为您建议的默认日期格式。在某些情况下,最好为用户保持一致。

标签: delphi delphi-7 regional-settings


【解决方案1】:

这是您的代码的更正版本:

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

【讨论】:

  • 那行得通:) 谢谢你,但你为什么编辑你以前的代码?这也对我有用
  • @PresleyDias - 不客气。以前的版本还可以,但新版本更安全、更通用。 PS:在Delphi XE2(但不是2007)中,您也可以代替“GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT,LocalFormatSettings);”简单地写“LocalFormatSettings := TFormatSettings.Create;”。
【解决方案2】:

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

var
  S: String;

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

【讨论】:

  • 不错的技巧;) 但如果我直接执行 'DateOne := StrToDate(now());' 会导致问题
    ....
猜你喜欢
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多