Delphi Convert TArray<;字符串>;迄今为止
我想将TArray中包含的所有值转换为TDateTime类型。 ConvertDS和ConvertDE是TDateTime变量,StoringData是TArrayDelphi Convert TArray<;字符串>;迄今为止,delphi,pascal,Delphi,Pascal,我想将TArray中包含的所有值转换为TDateTime类型。 ConvertDS和ConvertDE是TDateTime变量,StoringData是TArray StoringData : TArray<String>; SetLength(StoringData,2); for x := 0 to High(StoringData) do for c := 0 to High(StoringData[x]) do begin Stor
StoringData : TArray<String>;
SetLength(StoringData,2);
for x := 0 to High(StoringData) do
for c := 0 to High(StoringData[x]) do
begin
StoringData[x] := TotTime;
StoringData[c] := DataCovertedS;
end;
ConvertDS := (StrToDateTime(StoringData[c]));
ConvertDE := (StrToDateTime(StoringData[c+1]));
当我尝试执行它时,StrToDateTime不起作用。事实证明,实际问题是“如何从格式为
'YYYY-MM-DD'
的字符串中获取TDateTime
值”
幸运的是,这并不难。每次在API中使用新函数时,都要阅读它的文档。在这种情况下,文件说明如下:
S
必须由两个或三个数字组成,由DateSeparator
全局变量或其t格式设置
等效项定义的字符分隔。月、日和年的顺序由ShortDateFormat
全局变量或其t格式设置
等效值确定——可能的组合为m/d/y、d/m/y和y/m/d
因此,我们可以这样做:
//定义日期格式:
var FS:=t格式设置.不变量;
FS.DateSeparator:='-';
FS.ShortDateFormat:=“y/m/d”;
//以下是此格式的字符串示例:
常数S='2021-05-31';
//StrToDate将使用FS解析此项:
变量D:=标准日期(S,FS);
//测试:
ShowMessage(DateToStr(D));
请提供完整的代码,以便我们理解您的问题。您忘了告诉我们最重要的事情!什么类型是存储数据[i]?同样,存储数据的类型是什么?例如,如果StoringData
是TArray
,则StoringData[i]
是字符串。事实上,你有一个数组是无关的;重要的是价值观。谢谢你的更新。所以我们知道它们是弦。但我们也必须知道它们的格式。是2021-05-31 15:00:00
还是31/5 2021 15:00 am
等等?一般来说,将字符串转换为datetimes是不可能的,即使对人来说也是如此,所以这是一个通常避免的操作。如果你无法避免它,你需要满足于一个非常精确的格式。(另外,你的行对于c:=0到高(StoringData[x])do
显然是毫无意义的,Concat(年+'-'+月+'-'+日);
可以写成Year+'-'+Month+'-'+Day;
,而不是执行Copy
和+
,您应该使用FormatDateTime
或类似工具。)@Antoniopetrica添加了更多信息
Year := Copy(aData,0,4);
Month := Copy(aData,5,2);
Day := Copy(aData,7,2);
DataCovertedS := Concat(Year+'-'+Month+'-'+Day);