* 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
-- 
First, let me assure you that this is not one of those shady pyramid schemes
you've been hearing about.  No, sir.  Our model is the trapezoid!

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to