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

Reply via email to