[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: os.date question
 
- From: Mike Pall <mikelu-0701@...>
 
- Date: Mon, 8 Jan 2007 14:02:50 +0100
 
Hi,
Richard Warburton wrote:
> function get_days_in_month(mnth, yr)
>  return os.date('*t',os.time{year=yr,month=mnth+1,day=0})['day']
> end
> 
> It returns 29 for February in 1900 and 2100, which are not leap years. 
> It appears to fail the rule: that years divisible by 100 (except those 
> divisible by 400) are not leap years.
> All other dates seem fine.
> 
> Is this a bug or am I missing something?
os.time() returns a time_t cast to a number. And time_t is very
likely a 32 bit type on your machine. It counts in seconds, so it
has a limited range, usually from 1970-2038 (signed 32 bit int).
I.e. you've found a (well known) limitation in your C library.
Bye,
     Mike