You could also use the php date() function.
date('I');
If you need it for a specific date, then
date('I',$timestamp);
Curt Zirzow wrote:
> * Thus wrote Chirag Shukla:
> >
> > This function can be used to know whether it is Daylight Savings time or
> > not for the given date. It may not be the most optimized program, but
> > may be helpful.
> >
> > If there is a modified code, please let me know.
> ok.
> >
> > <?php
> >
> > // here is the date. We wont worry about the time.
> > $processdate = "07/04/2004 14:45";
> What about different formats like 07-04-2004 14:45:00
> >
> > // calling the function.
> > // 1 means the date is in a daylight savings time
> > // 0 means the date is not in a daylight savings time
> one thing to note, not all zones, even in the US honor the
> DST. this is a rather sepecific function.
> > echo daylight($processdate);
> >
> > // now the function
> >
> > function daylight($mydate)
> > {
> > // separating the date and time
> > $datetime = explode(" ",$mydate);
> >
> > // exploding the components of date
> > $dateexplode = explode("/",$datetime[0]);
> Instead of exploding stuff around, make your date argument compatible
> with the strtotime() function, it will return a unix timestamp or
> -1 if it fails to parse the date.
> >
> > // if the date is between Jan-Mar, NO DAYLIGHT
> > // if the date is between Nov-Dec, NO DAYLIGHT
> > if ($dateexplode[0]<4 or $dateexplode[0]>10)
> > {
> > return 0;
> > }
> > // if the date is not in the above zone, lets see
> > // if the date is between May-Sep, DAYLIGHT
> > elseif ($dateexplode[0]>4 and $dateexplode[0]<10)
> > {
> > return 1;
> > }
> Since you have a timestamp as I suggested above, you simply need
> to pull the month out, and then check the month value:
> $month = strftime('%m', $utimestamp);
> swtich ($month) {
> case '01': case '02': ...
> return 0;
> case '05': case '06': ...
> return 1;
> }
> > else
> > {
> > // we are going to pull out what date is a sunday
> > // then we compare our date's day-of-month with the
> > day-that-is-sunday
> >
> > $interestday = 0;
> >
> > // lets see what happens in april - first sunday of the month
> > if ($dateexplode[0]==4)
> > {
> > // looping the first seven days to see what day is a
> > sunday
> > for ($i=1; $i<=7; $i++)
> > {
> > $myday =
> >
> > date("w",mktime(0,0,0,$dateexplode[0],$i,$dateexplode[2]));
> > if ($myday==0)
> > $interestday = $i;
> > }
> >
> > // now that we got what day is a sunday, lets see
> > // if our date's day-of-month is greater than this
> > or not
> > // if it is greater, then DAYLIGHT
> > if ($dateexplode[1]>=$interestday)
> > return 1;
> > else
> > return 0;
> > }
> >
> > // lets see what happens in october - last sunday of the
> > month
> > elseif ($dateexplode[0]==10)
> > {
> > // looping the first seven days to see what day is a
> > sunday
> > for ($i=25; $i<=31; $i++)
> > {
> > $myday =
> >
> > date("w",mktime(0,0,0,$dateexplode[0],$i,$dateexplode[2]));
> > if ($myday==0)
> > $interestday = $i;
> > }
> >
> > // now that we got what day is a sunday, lets see
> > // if our date's day-of-month is greater than this
> > or not
> > // if it is less, then DAYLIGHT
> > if ($dateexplode[1]<=$interestday)
> > return 1;
> > else
> > return 0;
> > }
> > }
> now instead of doing all that mundane work, we simply have to
> find out if the days are outabounds for the paticular months.
> // obtain the day of month
> $dayofmonth = (int)strftime('%d', $utimestamp);
> // and the day of week
> $dayofweek = strftime('%u', $utimestamp);
> if ($month == '04') {
> // If its the first week of 04
> if ($dayofmonth <= 7) {
> // and we havn't reached sunday, return 0
> return ($dayofweek < 7) ? 0: 1;
> }
> return 1; // otherwise we're passed it.
> } elseif ($month == '10') {
> // look at the last week october
> if ($dayofmonth >= 24) {
> // see if we're still in the zone.
> return ($dayofweek < 7) ? 1: 0;
> }
> return 1;
> }
> // something went wrong.
> return -2;
> > }
> Curt
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php