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

时间:2015-01-19 06:30:22

标签: delphi date datetime delphi-7

我有的数据

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

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

我想

现在,我想将所有不同格式的日期和时间字符串转换为" yyyy-mm-dd hh:mm:ss" 格式

我正面临的问题

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

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

StrToDateTime('2015/02/10')

它引发了异常。

任何人都可以告诉我如何实现这一目标吗? 如果需要更多详细信息,请与我们联系。 提前谢谢。

3 个答案:

答案 0 :(得分: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 :(得分:1)

在此过程中出错,因为无法使用FS:= TFormatSettings.Create; TformatSettings仅为System保留。 TformatSettings没有Create方法。在这一行编译器告诉Craeate不知道 我推荐这个程序,以不同的格式从一个字符串转换为另一个字符串

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的此程序系统设置将恢复为默认设置,因为它是本地变量

答案 2 :(得分:0)

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