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