我试图将mmm/yy格式的字符串转换为TDateTime使用该TryStrToDate函数的字符串.然而它似乎总是失败.
我创建一个格式设置记录并设置日期分隔符和短日期格式.我设置了长日期格式,以表明无论是设置短日期还是长日期格式都会出现问题.
如果我改变示例使用dd/mm/yyyy并在2017年1月1日通过然后它成功,所以我相信问题可能是格式.我使用以下链接作为创建格式字符串的参考
http://www.delphibasics.co.uk/RTL.asp?Name=formatdatetime
我制作了一个演示控制台应用程序来展示我想要做的事情的一个例子
uses
System.SysUtils;
function ValidateDate(ADate: string): boolean;
var
fs: TFormatSettings;
DateTime: TDateTime;
begin
fs := TFormatSettings.Create();
fs.DateSeparator := '/';
fs.ShortDateFormat := 'mmm/yy';
fs.LongDateFormat := 'mmm/yy';
result := true;
if not TryStrToDate(ADate, DateTime, fs) then
result := false;
end;
begin
try
if not ValidateDate('Oct/16') then
WriteLn('Failed to convert')
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Run Code Online (Sandbox Code Playgroud)
我会欣赏任何关于为什么失败的想法