----- Original Message ----- 
From: "Naga subba reddy"
> Hi use this code.
> 
> <?php
> 
> function get_day( $describer, $weekday, $reference_date ) {   
> //$reference_date format = m-Y
> 
>    $d = explode('-',$reference_date);
>   
>    switch ($describer) {
>        case 'first':  $offset = get_day_offset($reference_date, $weekday); 
> break;
>        case 'second': $offset = get_day_offset($reference_date, $weekday) + 
> 7; break;
>        case 'third':  $offset = get_day_offset($reference_date, $weekday) + 
> 14; break;
>        case 'fourth': $offset = get_day_offset($reference_date, $weekday) + 
> 21; break;
>        case 'last':   $reference_date = ($d[0]+1).'-'.($d[1]); $d = 
> explode('-',$reference_date);
>                       $offset = get_day_offset($reference_date, $weekday) - 
> 7; break;
>    }
>   
>    $r = mktime( 0, 0, 0, $d[0], 1+$offset, $d[1] );
>    return $r;  //returns timestamp format
> }
> 
> function get_day_offset( $anchor , $target ) {  //$anchor format = m-Y
> 
>    $ts = explode('-',$anchor);
>    $ts = mktime(0,0,0,$ts[0],'01',$ts[1]);
>   
>    $anchor = date("w",$ts);
>    $target = strtolower($target);
>    $days = array( 'sunday'=>0, 'monday'=>1, 'tuesday'=>2, 'wednesday'=>3, 
> 'thursday'=>4, 'friday'=>5, 'saturday'=>6 );
>   
>    $offset = $days[$target] - $anchor;
>    if ($offset<0) $offset+=7;
>   
>    return $offset;  //returns 0-6 for use in get_day();
> }
> 
>       
> $date1 = get_day("Second", "Saturday", "12-2007");
> $date2 = get_day("Last", "Friday", "11-2007");
> $date3 = get_day("Second", "Sunday", "11-2007");
> 
> echo "Last Friday of November, 2007: ".date("m-d-Y", $date2)."<br>";
> echo "Second Sunday of November, 2007: ".date("m-d-Y", $date3)."<br>";
> 
> ?>

Hi Subba,
Just had to make the "Second", "Last" in get_day(); to lowercase, and it works 
a treat.

I was thinking of building up my own function, but you've done it all for me.
Now, what I'm I going to do for the rest of the week? (I'm joking of course).

Many thanks, Bob.


Reply via email to