我有的数据
我有一个存储在数据库中的数据,其中日期和时间存储为字符串。
此数据存储在中央服务器上。在此数据中,日期和时间已存储为不同的格式(根据客户端计算机的日期时间格式而有所不同)。
我想
现在,我想将所有不同格式的日期和时间字符串转换为" yyyy-mm-dd hh:mm:ss" 格式
我正面临的问题
我无法将具有多种日期时间格式的日期时间数据转换为单一格式。
示例: 我的机器日期时间格式为 yyyy-mm-dd 。 但是当我试图转换下面的日期时
StrToDateTime('2015/02/10')
它引发了异常。
任何人都可以告诉我如何实现这一目标吗? 如果需要更多详细信息,请与我们联系。 提前谢谢。
答案 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”,我无法...显然,一个简单的解决方法是将系统日期格式更改为所需的输出格式...