Delphi Convert TArray<;字符串>;迄今为止

Delphi 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

我想将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
         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);