Autor | Zpráva | ||
---|---|---|---|
Pan_snek Profil * |
#1 · Zasláno: 26. 6. 2008, 10:44:01
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 |
#2 · Zasláno: 26. 6. 2008, 11:08:06
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 |
#3 · Zasláno: 26. 6. 2008, 11:23:54 · Upravil/a: ShiraNai7
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 |
#4 · Zasláno: 26. 6. 2008, 11:39:11
<?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 |
#5 · Zasláno: 26. 6. 2008, 13:12:29
PEAR balik DATE riesi toto a mnoho dalsich problemov.
|
||
Pan_snek Profil * |
#6 · Zasláno: 26. 6. 2008, 21:52:41
Lidičky děkuju vám, já si s tim lamal hlavu a nedal bych to dokupy ani dio Vánoc.
Moc dík |
||
Časová prodleva: 17 let
|
0