我拥有的数据
我有一个存储在数据库中的数据,其中有一个以字符串存储的日期和时间。
此数据存储在中央服务器中。在此数据中,日期和时间以不同的格式存储了((根据客户端计算机的日期时间格式而有所不同)。
我想做
现在,我要将所有这些不同格式的日期和时间字符串转换为“ yyyy-mm-dd hh:mm:ss”格式。
我面临的问题
我无法将具有多个日期时间格式的日期时间数据转换为单一格式。
示例:我的机器日期时间格式为yyyy-mm-dd。但是当我尝试转换以下日期时
StrToDateTime('2015/02/10')
引发异常。
有人可以告诉我如何实现这一目标吗?请让我知道是否需要更多详细信息。预先谢谢你。
您需要自定义日期格式设置,例如:
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;
在此过程中为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的此过程系统设置将恢复为默认设置,因为它是局部变量
有相同的问题。显然,我希望将日期转换为这种格式的字符串“ yyyy-MM-dd”,而我无法...显然,一个简单的解决方法是将系统日期格式更改为所需的输出格式...