【发布时间】:2017-02-01 07:23:14
【问题描述】:
我正在尝试使用 TryStrToDate 函数将 mmm/yy 格式的字符串转换为 TDateTime。然而,它似乎总是失败。
我创建格式设置记录并设置日期分隔符和短日期格式。我设置了长日期格式以表明无论我设置短日期格式还是长日期格式都会出现问题。
如果我将示例更改为使用 dd/mm/yyyy 并传入 01/02/2017,那么它会成功,所以我认为问题可能出在格式上。我使用以下链接作为创建格式字符串的参考
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.
我会很感激任何关于为什么失败的想法
【问题讨论】:
-
不要使用 Delphibasics。使用官方文档。而且您的结果设置很奇怪。使用
result := TryStrToDate(...) -
也许this post(特别是我写的答案)可以提供帮助。
标签: date delphi delphi-10-seattle