I can convert a Delphi TDate to ISO 8601 format easily using this:
DateTimeToString(result, 'yyyy-mm-dd', myDate);
What's the idiomatic way to do the inverse conversion? StringToDateTime()
doesn't seem to exist.
Obviously I can do it the "hard" way by manually parsing the string and encoding the result, but that seems a poor choice.
why re-invent the wheel?
XML uses ISO 8601 for date and date-time storage.
Delphi has had built-in support for that since Delphi 6 in the XSBuiltIns unit.
This answer explains how for DateTime, this is for Date only using the TXSDate class:
with TXSDate.Create() do
try
AsDate := Date; // convert from TDateTime
DateString := NativeToXS; // convert to WideString
finally
Free;
end;
with TXSDate.Create() do
try
XSToNative(DateString); // convert from WideString
Date := AsDate; // convert to TDateTime
finally
Free;
end;