Паскаль строка на сегодняшний день - PullRequest
2 голосов
/ 11 ноября 2009

Может кто-нибудь сказать мне, что не так с этим фрагментом кода:

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

Я продолжаю получать

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

Я использую fpc.

Ответы [ 2 ]

3 голосов
/ 11 ноября 2009

С здесь (перефразировано):

StrToDate не использует ShortDateFormat для проверки фактического формата; он использует его только для определения порядка y, m, d , а затем использует DateSeparator для определения действительного символа разделителя даты.

Итак, что вам нужно:

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

Вы можете подумать о:

  • сохраняя ShortDateFormat и DateSeparator перед этим, чтобы вы могли восстановить их (они установлены изначально в зависимости от вашей локали); или
  • используя даты, основанные на ваших фактических настройках, и не изменяйте эти два значения вообще.
0 голосов
/ 11 ноября 2009

Вставьте это в свой код перед вызовом StrToDate:

Writeln(DateTimeToStr(Date));

Если вывод не содержит /, но другой символ, вы должны использовать этот символ в качестве разделителя в вашей строке.

В моей системе это дает: 11.11.2009. Если я тогда использую 05.05.1999, это работает.

...