phpbar.de logo

Mailinglisten-Archive

[php] Fw: get weekdays

[php] Fw: get weekdays

Michael Borchers list at tridemail.de
Mit Jan 17 13:47:06 CET 2007


Nach mehrfachem Hin und Her hat mich die Funktion nicht mehr überzeugt.
Stattdessen habe ich es mit folgendem eigenen Skript versucht,
scheint zu klappen. Sehr ihr irgendwo Probleme? Verbesserungsvorschläge?!

function get_weekdays($d,$m,$y)
{
 $date = "$y-$m-$d";

 $week = date("W", strtotime("$date 00:00:00"));

 echo "$d.$m.$y befindet sich in Kal.Woche $week<br>";

 $date_timestamp = strtotime($date);
 $first_day  = date("w", $date_timestamp);

 echo date('d.m.Y', $date_timestamp) . "=> ";
 echo "Der erste Tag ist ein $first_day";

 if($first_day == 0)
 {
  $date_timestamp = strtotime("-6 days", $date_timestamp);
  echo " = Sonntag<br>";
 }
 else if($first_day > 1)
 {
  $first_day--;

  #$date_timestamp = strtotime("-1 days", $date_timestamp);
  $date_timestamp = strtotime("-$first_day days", $date_timestamp);

  echo " - $first_day Tage werden abgezogen<br>";
 }

 for($d=0;$d<7;$d++)
 {
  $week_dates[$d] = date('Y-m-d', strtotime("+$d days", $date_timestamp));
 }

 echo "<br>";
 echo "Die Daten der Wochentage ab Montag lauten:<br>";
 print_r($week_dates);
 echo "<hr>";
}

get_weekdays(1,1,2006);
get_weekdays(31,12,2006);
get_weekdays(1,1,2007);
get_weekdays(2,1,2007);
get_weekdays(7,1,2007);
get_weekdays(8,1,2007);

> Michael Borchers schrieb:
>> Keine Idee?! :(
>
> nö, aber
>
>>
>>> folgende funktion, die ich irgendwo gefunden habe, lief wunderbar, bis 
>>> zum
>>> jahreswechsel.
>>> er erkennt schon, dass wir uns in der 2.woche des jahres befinden, aber
>>> der
>>> timestamp wird nicht korrekt für heute berechnet.
>>>
>>> laut mysql ist der timestamp für heute, den 08.01.2007:
>>> 1168210800
>>>
>>> doch laut funktion: 1167649200
>
> wie sehen die Daten formatiert aus? (Y-m-d)
>
>
>>> function get_weekdays($week,$year)
>>> {
>>> $week_dates = array();
>>>
>>> // Get timestamp of first week of the year
>>> $first_day = mktime(12,0,0,1,1,$year);
>>> $first_week = date("W",$first_day);
>
> am 4.1. hast du auf jeden Fall immer die 1. Woche das Jahres (laut ISO
> ist die 1. Woche des Jahres die Woche die mindestens 4 Tage im neuen
> Jahr hat)
>
>>> if ($first_week > 1) {
>>>    $first_day = strtotime("+1 week",$first_day); // skip to next if year
>>> does not begin with week 1
>>> }
>
> dann sparst du dir das ^^
>
>
>>>
>>> // Get timestamp of the week
>>> $timestamp = strtotime("+$week week",$first_day);
>
> schonmal "2007-001" oder 2007W01 osä. mit strtotime() probiert?
>
>
>>> // Adjust to Monday of that week
>>> $what_day = date("w",$timestamp); // I wanted to do "N" but only version
>>> 4.3.9 is installed :-(
>>>
>>>
>>> if ($what_day==0) {
>>>    // actually Sunday, last day of the week. FIX;
>>>    $timestamp = strtotime("-6 days",$timestamp);
>>> } elseif ($what_day > 1) {
>>>    $what_day--;
>>>    $timestamp = strtotime("-$what_day days",$timestamp);
>>> }
>>>
>>> $week_dates[1] = date("Y-m-d",$timestamp); // Monday
>>> $week_dates[2] = date("Y-m-d",strtotime("+1 day",$timestamp)); // 
>>> Tuesday
>>> $week_dates[3] = date("Y-m-d",strtotime("+2 day",$timestamp)); //
>>> Wednesday
>>> $week_dates[4] = date("Y-m-d",strtotime("+3 day",$timestamp)); // 
>>> Thursday
>>> $week_dates[5] = date("Y-m-d",strtotime("+4 day",$timestamp)); // Friday
>>> #   $week_dates[6] = date("Y-m-d",strtotime("+5 day",$timestamp)); //
>>> Saturday
>>> #   $week_dates[7] = date("Y-m-d",strtotime("+6 day",$timestamp)); //
>>> Sunday
>>> return($week_dates);
>>> } 


php::bar PHP Wiki   -   Listenarchive