Slow performance using strtotime on prior 1970 dates

Slow performance using strtotime on prior 1970 dates

am 14.09.2007 21:22:37 von cla

I'm using this code on an application to track football schedules:
----
$season = '2005';
$basedate = strtotime('this friday', strtotime('31 August '.$season));

for($d=0;$d<=31;$d++) {
$d2=strtotime("+".$d." day",$basedate);
echo(date('m d Y',$d2)."\n");
}
----
The purpose is to find the first Friday on or after Aug. 31 in a given
year. Plug '2005' into $season, and it flies through. Plug in
'1905', however, and each step in the for loop takes about .5 sec.
I'm running this code in PHP 5.2.1. Any ideas?

Re: Slow performance using strtotime on prior 1970 dates

am 14.09.2007 21:24:55 von ragearc

Well the fact is 1970 was when the Unix Epoch started, so any dates
prior to that date are much more slower. I don't know why, but try on
a Windows machine and see if the same happens. Probably it's just on
*nix systems.

Re: Slow performance using strtotime on prior 1970 dates

am 14.09.2007 21:59:20 von zeldorblat

On Sep 14, 3:22 pm, cla wrote:
> I'm using this code on an application to track football schedules:
> ----
> $season = '2005';
> $basedate = strtotime('this friday', strtotime('31 August '.$season));
>
> for($d=0;$d<=31;$d++) {
> $d2=strtotime("+".$d." day",$basedate);
> echo(date('m d Y',$d2)."\n");}
>
> ----
> The purpose is to find the first Friday on or after Aug. 31 in a given
> year. Plug '2005' into $season, and it flies through. Plug in
> '1905', however, and each step in the for loop takes about .5 sec.
> I'm running this code in PHP 5.2.1. Any ideas?

If all you want to do is find the first Friday on or after August 31
why do you need the loop?

Re: Slow performance using strtotime on prior 1970 dates

am 14.09.2007 22:06:04 von cla

On Sep 14, 12:59 pm, ZeldorBlat wrote:
> On Sep 14, 3:22 pm, cla wrote:
>
> > I'm using this code on an application to track football schedules:
> > ----
> > $season = '2005';
> > $basedate = strtotime('this friday', strtotime('31 August '.$season));
>
> > for($d=0;$d<=31;$d++) {
> > $d2=strtotime("+".$d." day",$basedate);
> > echo(date('m d Y',$d2)."\n");}
>
> > ----
> > The purpose is to find the first Friday on or after Aug. 31 in a given
> > year. Plug '2005' into $season, and it flies through. Plug in
> > '1905', however, and each step in the for loop takes about .5 sec.
> > I'm running this code in PHP 5.2.1. Any ideas?
>
> If all you want to do is find the first Friday on or after August 31
> why do you need the loop?

The loop's more for a demo. In the live app, there's a drop down list
of possible dates within a given week of a season. The first Friday
is just the starting point from which all subsequent dates are
referenced.

Re: Slow performance using strtotime on prior 1970 dates

am 14.09.2007 22:08:46 von cla

On Sep 14, 12:24 pm, RageARC wrote:
> Well the fact is 1970 was when the Unix Epoch started, so any dates
> prior to that date are much more slower. I don't know why, but try on
> a Windows machine and see if the same happens. Probably it's just on
> *nix systems.

Made a quick test on a Windows box, and the performance seems to be
about the same.

Re: Slow performance using strtotime on prior 1970 dates

am 14.09.2007 23:08:27 von ragearc

Well, I searched, and I found the following:

The valid range of a timestamp is typically from Fri, 13 Dec 1901
20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates
that correspond to the minimum and maximum values for a 32-bit signed
integer.) Additionally, not all platforms support negative timestamps,
therefore your date range may be limited to no earlier than the Unix
epoch. This means that e.g. dates prior to Jan 1, 1970 will not work
on Windows, some Linux distributions, and a few other operating
systems. PHP 5.1.0 and newer versions overcome this limitation though.

Yep, 5.1.0 overcomes this limitation, but at a much slower pace.