[fpc-pascal] Why has StrToDate() failing under FPC 2.3.1 (64bit)
Michael Van Canneyt
michael at freepascal.org
Tue Oct 20 13:17:29 CEST 2009
On Tue, 20 Oct 2009, Graeme Geldenhuys wrote:
> On 20/10/2009, Michael Van Canneyt <michael at freepascal.org> wrote:
>> -----------------------------------------------------------------
>> Call StrToDate to parse a string that specifies a date. If S does
>
> [...]
>
>
>> First lines say it all. "dd/mm/yyy hh:nn" is not supposed to work.
>
> That's up for discussion! :-) It says the string must specify a date.
> It does not say it must ONLY specify a date. It parses the string from
> the left extracting what it needs, once it has all required
> information to build a date, it ignores the rest.
I'll adapt the docs and insert the 'only'.
>
> Also, do I specify a date from the 17th century? Does StrToDate()
> limit itself forever to only assume 19xx & 20xxx dates?
>
> Why does StrToDate() use the ShortDateFormat - didn't we learn our
> lesson with the Y2K bug?
Y2K is not relevant.
My ShortDateFormat is set to dd/mm/yyyy, perfectly Y2K safe.
Only the relative order of y,m,d is needed from shortdateformat.
So the actual number, 1,2 or 4 ys is not relevant. You are still thinking
that it uses the actual dateformat, when it does not.
> PS:
> Oh and a nice hidden little features (I couldn't find documentation
> for). When you specify a date format as 'yyyy/mm/dd' or dd/mm/yy
> etc... The '/' character is NOT the separator! The '/' in that
> formatting string means the separator specified by the global
> DateSeparator variable.
Ehm. This is so since day 1, it's even documented ?
>
> Yet if you specify 'yyyy-mm-dd', then the '-' character IS the date
> separator to use, ignoring global DateSeparator variable.
>
> Maybe the FPC docs could be extended to include this little gem. By
> the way, I tested the above theory with Kylix 3 and Delphi 7.
It is mentioned in topic 'Date and time formatting characters' of the FPC
docs.
Michael.
More information about the fpc-pascal
mailing list