Autor Zpráva
Pan_snek
Profil *
Zdravím,
lámu si tu hlavu s tim, jak vypsat dny v týdnu, když vim napřiklad datum 5.06.2008, aby to bylo pravdivy ...

Takže mám vybraný datum čtvrtek 5.června 2008 a jak přinutit php k tomu, aby to inteligentně určilo dny v tom tydnu ?

Správně k 5.6.2008 by to melo vypadnout (dny v tom týdnu, kde je vybrané datum)

PO- 2.6
UT- 3.6
ST- 4.6
CT- 5.6
PA- 6.6
SO- 7.6
NE- 8.6

vůbec nerozumím jak k tomu dospěju, aby to transformovalo to datum. Kdybybych aspon dokazal zjistit z datumu posledni datum pondelku a k tomu přičet + 7 dní a mám pak tedy týden, ale to me napadlo teoreticky, prakticky nevim jak v PHP co použít :(

Poradíte mi někdo prosím ?
ninja
Profil
1. Prevedes si string "5.6.2008" na unix timestam.
2. echo (date ('l', $timestamp));

3. Pripadne upravis jazykove nastaveni ci si to predela svlastni funkci, abys mel Pondeli a ne Monday.
ShiraNai7
Profil
Tohle jsem právě napsal. Zdá se to být funkční.

//zjisteni dne v tydnu
$den=mktime(0, 0, 0, 6, 5, 2008);
$den_v_tydnu=getdate($den);
$den_v_tydnu=$den_v_tydnu['wday'];

//vypocet zbyvajicich dnu
$start=-1*$den_v_tydnu+1;
$end=$start+6;
$dny_tydne=array();
$dny_tydne_nazvy=array('PO', 'ÚT', 'ST', 'ČT', 'PÁ', 'SO', 'NE');
$den_tydne=0;

  for($rozdil=$start; $rozdil<=$end; $rozdil++){
  $dny_tydne[]=$dny_tydne_nazvy[$den_tydne].' - '.date('j.n.', $den+$rozdil*86400);
  $den_tydne++;
  }
  
//vypis dnu
echo '<ul>';
foreach($dny_tydne as $polozka){
echo '<li>'.$polozka.'</li>';
}
echo '</ul>';


Vypíše to seznam v této podobě:
    * PO - 2.6.
    * ÚT - 3.6.
    * ST - 4.6.
    * ČT - 5.6.
    * PÁ - 6.6.
    * SO - 7.6.
    * NE - 8.6.
lordfrikk
Profil
<?php

function GetWeekByDay($sDayInWeek)
{
  $sToday = strtotime($sDayInWeek);
  $sYear  = date('Y', $sToday);
  $sWeek  = date('W', $sToday);
  
  $iOffset = date('w', mktime(0, 0, 0, 1, 1, $sYear));
  $iOffset = ($iOffset < 5) ? 1 - $iOffset : 8 - $iOffset;
  
  $sFirstDayInWeek = strtotime('+' . ($sWeek - 1) . ' weeks', mktime(0, 0, 0, 1, 1 + $iOffset, $sYear));
  
  $aWeekDays[1] = $sFirstDayInWeek;
  
  for ($i = 2; $i < 8; $i++)
  {
     $aWeekDays[$i] = $aWeekDays[$i-1] + 86400;
  }
  array_walk($aWeekDays, create_function('&$a', '$a = date("d-m-Y", $a);'));
  return $aWeekDays;
}

$today = '5.6.2008';
var_dump(GetWeekByDay($today));

/*

array(7) {
  [1]=>
  string(10) "02-06-2008"
  [2]=>
  string(10) "03-06-2008"
  [3]=>
  string(10) "04-06-2008"
  [4]=>
  string(10) "05-06-2008"
  [5]=>
  string(10) "06-06-2008"
  [6]=>
  string(10) "07-06-2008"
  [7]=>
  string(10) "08-06-2008"
}


*/

?>
srigi
Profil
PEAR balik DATE riesi toto a mnoho dalsich problemov.
Pan_snek
Profil *
Lidičky děkuju vám, já si s tim lamal hlavu a nedal bych to dokupy ani dio Vánoc.
Moc dík

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: