[fpc-devel] MinDateTime is 100 AD ?

Joost van der Sluis joost at cnoc.nl
Mon Jul 2 22:46:28 CEST 2007


On Mon, 2007-07-02 at 22:32 +0200, Vincent Snijders wrote:
> On Mon, 02 Jul 2007 22:21:22 +0200
> Joost van der Sluis <joost at cnoc.nl> wrote:
> 
> > On Mon, 2007-07-02 at 22:07 +0200, Michael Van Canneyt wrote:
> > > 
> > > On Mon, 2 Jul 2007, Joost van der Sluis wrote:
> > > 
> > > > On Mon, 2007-07-02 at 21:48 +0200, Michael Van Canneyt wrote:
> > > > > 
> > > > > On Mon, 2 Jul 2007, Joost van der Sluis wrote:
> > > > > 
> > > > > > Hi all,
> > > > > > 
> > > > > > In sysstrh.inc MinDateTime is defined as follows:
> > > > > > 
> > > > > >   { For floattodatetime }
> > > > > >   MinDateTime: TDateTime = -657434.0;     { 01/01/0100 12:00:00.000 AM }
> > > > > >   MaxDateTime: TDateTime =  2958465.99999;{ 12/31/9999 11:59:59.999 PM }
> > > > > > 
> > > > > > Why is that? Datetimes before 100AD works perfectly. Can I change it to
> > > > > > 01/01/01 ? (Why does this restriction exist at all?!?)
> > > > > 
> > > > > Delphi compatibility, probably. As far as I know, it's not used ?
> > > > 
> > > > It is used in cvarutil.VariantToDate and in sysstr.FloatTodateTime. 
> > > 
> > > Probably to avoid a conversion error ?
> > > Maybe some Microsoft thing, that's where TDateTime comes from ?
> > > 
> > > The reason is probably lost in the mists of time :-)
> > 
> > I'll change it to 01/01/01. When it raises problems on windows, the db-
> > testsuite will detect that. 
> 
> Just an idea, what happens if you assign '01/01/01' (the string) to a variant and then assign the variant to a tdatetime?
> 
> Is it a date from the year 1901 or not?

It'll return 1901. If you supply '01/01/0001' it will return the year
0001 in fpc 2.1.4, and 1901 in fpc 2.0.4.

Joost.
ps: I meant 01/01/0001 for MinDateTime, offcourse.





More information about the fpc-devel mailing list