* 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