如何以不同的格式转换日期和时间?

问题描述 投票:3回答:3

我拥有的数据

我有一个存储在数据库中的数据,其中有一个以字符串存储的日期和时间

此数据存储在中央服务器中。在此数据中,日期和时间以不同的格式存储了((根据客户端计算机的日期时间格式而有所不同)

我想做

现在,我要将所有这些不同格式的日期和时间字符串转换为“ yyyy-mm-dd hh:mm:ss”格式。

我面临的问题

我无法将具有多个日期时间格式的日期时间数据转换为单一格式。

示例:我的机器日期时间格式为yyyy-mm-dd。但是当我尝试转换以下日期时

StrToDateTime('2015/02/10')

引发异常。

有人可以告诉我如何实现这一目标吗?请让我知道是否需要更多详细信息。预先谢谢你。

delphi date datetime delphi-7
3个回答
7
投票

您需要自定义日期格式设置,例如:

procedure Test;
var
  DT: TDateTime;
  FS: TFormatSettings;

begin
  FS:= TFormatSettings.Create;
  FS.DateSeparator:= '/';
  FS.ShortDateFormat:= 'yy/m/d';
  DT:= StrToDateTime('2015/02/10', FS);
  Writeln(FormatDateTime('dd mm yyyy', DT));
end;

1
投票

在此过程中为error,因为无法使用FS:= TFormatSettings.Create;TformatSettings仅保留用于System。 TformatSettings没有Create方法。在这行编译器告诉Creeate不知道我建议使用此程序将一个字符串转换为另一种格式的字符串

enter code here

Procedure TForm4.ConvertDate(var DataValue:string);   
var
        AFormatSettings:TFormatSettings;  
        ALocaleID: integer;  
        DateTym :TdateTime;

begin  
 DataValue:=StringReplace(DataValue, '/',{OldPattern} '-', {NewPattern}     
                 [rfReplaceAll, rfIgnoreCase] {Flags:TreplaceFlags});     
  //this StringReplace must be used because with Separator  / for date    
   //occurs error          
 GetLocaleFormatSettings(ALocaleID, AFormatSettings);  
 AFormatSettings.ShortDateFormat:='DD-MM-YYYY';   
 DateTym:=StrToDate(DataValue, AFormatSettings);     
 AFormatSettings.ShortDateFormat:='YYYY-MM-DD';      
 //AFormatSettings.ShortDateFormat:='MM-DD-YYYY'; //can be also used        
 DataValue:=FormatDateTime(AFormatSettings.ShortDateFormat,DateTym);          

end;        

请勿更改系统的AFormatSettings。如果您从AFormatSettings的此过程系统设置将恢复为默认设置,因为它是局部变量


0
投票

有相同的问题。显然,我希望将日期转换为这种格式的字符串“ yyyy-MM-dd”,而我无法...显然,一个简单的解决方法是将系统日期格式更改为所需的输出格式...

© www.soinside.com 2019 - 2024. All rights reserved.