2

谁能告诉我这段代码有什么问题:

ShortDateFormat := 'dd/mm/yyyy';
j:=StrToDate('05/05/1999');

我不断得到

An unhandled exception occurred at $000000000042FA33 :
EConvertError : Invalid date format

我用的是fpc。

4

2 回答 2

3

这里(释义):

StrToDate不使用ShortDateFormat来检查实际格式;它仅使用它来确定y、m、d的顺序,然后使用DateSeparator来确定实际的日期分隔符。

所以你需要的是:

ShortDateFormat := 'd/m/y';
DateSeparator := '/';
j:=StrToDate('05/05/1999');

您可能需要考虑:

  • 保存ShortDateFormatDateSeparator在执行此操作之前恢复它们(它们最初是根据您的语言环境设置的);或者
  • 根据您的实际设置使用日期,并且根本不更改这两个值。
于 2009-11-11T07:30:47.867 回答
0

在调用之前将其插入您的代码中StrToDate

Writeln(DateTimeToStr(Date));

如果输出不包含/但另一个字符,则必须使用此字符作为字符串中的分隔符。

在我的系统上,这给出了:11.11.2009。如果我然后使用05.05.1999它确实有效。

于 2009-11-11T07:31:42.087 回答