» »

[php] število tednov v mesecu

[php] število tednov v mesecu

Veron ::

Torej narediti je potrebno funkcijo, ki bo za določen mesec (recimo vzamemo za primer December 2010) prvo vrnila število tednov v mesecu (vrniti mora tudi necele tedne, torej če se mesec začne, 1.12.2010, na sredo, to je 1. teden v tem mesecu in tako do konca, četudi je recimo zadnji dan v nekem X mesecu ponedeljek, je to "svoj" teden (torej kriterij za teden je ponedeljek-nedelja)).

Potem druga naloga, ko dobim števila tednov (vse skupaj jih mora biti točno toliko kolikor jih je v letu) pa je naloga, da za vsak teden dobim datume nazaj ven. Recimo 1. teden december 2010 moram ven dobit datume od 29.11.2010 do 5.12.2010).

Nekako nimam pametne ideje kako bi to rešil na "lep" način.

Da še opišem zadevo, kako bo funkcionirala na spletni strani:
torej uporabnik bo imel neke vrste filter in bo izbral prvo leto, nato mesec, zraven mu izpiše številke tednov (1,2,3,4,5 - recimo december) in ko klikne na številko 1 mu prikaže dogodke, ki bodo v 1. tednu v decembu (vključno od 29.11. do 5.12.) in potem klikne 2. teden v tem mesecu pa mu prikaže dogodke od 6.12. pa do 12.12. itd...

Poldi112 ::

Pogledaš datumske funkcije, ki ti jih nudi php, in izbereš najprimernejše zate.
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

Veron ::

kok sm iskal (mogoče tud kej spregledal) ni prav funkcije ki vračala število tednov v mesecu oz. potem še glede na številko tedna vrnila od do datume, ki so v tem tednu. zato sem tole temo napisal in upal na malo pomoči ali vsaj "po čem" (=kaj) brskat, ker trenutno sm bol v "slepi ulci" :D

edit: torej takole sem uspel ugotovit kateri datumi so v določenem tednu
$year	= '2011';
$week	= '05';
for($i=1; $i<=7; $i++) {
	$day = strtotime($year.'W'.$week.$i);
	echo 'dan '.date("d.m.Y",$day).' -> '.date("N", $dan).'. dan v tednu<br>';
}


Za kateri tedni v mesecu so pa takole nekako razmišljam:
Primer: v mesecu januarju so tedni od 1-5 potem mesec februar ima tedne od 5 do 9 itd...

Edino če bi šel na vajanto
$date = mktime(0, 0, 0, 02, 01, 2011); // 1.feb
$week = (int)date('W', $date); 
echo $week;
// dobim 5
Tako bi pridobil s katerim tednom se mesec začne, potem bi še vzel zadnji dan v mesecu (takole:)
$datum = strtotime('05.04.2011');
echo date('t',$datum);

Tako bi dobil recimo zadnji dan v mesecu in bi pogledal v katerem tednu je, vse skupaj povem naredil zanko in gre od začetnega tedna do zadnjega tedna in izpisuje številke tednov v tem mesecu

Mogoče kak boljši predlog?

Zgodovina sprememb…

  • spremenil: Veron ()

Poldi112 ::

Sam sem sicer hobby programer, tako da mogoče tole ne bo najbolj optimalno, ampak:

http://php.net/manual/en/function.date....

Vzameš N, ki ti pove, kateri dan v tednu je 1. dan v mesecu. Potem vzameš še t, ki ti pove, koliko dni ima mesec:

Št. tednov= zaokroženo navzgor ( ( "št. dni v mesecu" - (7 - "vrednost, ki ti jo vrne date(N)") ) / 7 ) ;
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.

Zgodovina sprememb…

  • spremenil: Poldi112 ()

Veron ::

hehe sem glih edital post medtem ko si napisal odgovor [:-)]

Št. tednov = zaokroženo navzgor ( ( "št. dni v mesecu" - (7 - "vrednost, ki ti jo vrne date(N)") ) / 7 ) ;


ni slaba ideja, vendar (verjetno sem slabo napisal, kaj želim doseči) potrebujem še številke teh tednov ki so v tem mesecu

ker po tem kar sem zgoraj napisal bi uspel pridobit v katerem tednu je prvi dan v mesecu in zadnji. Stran pa bi izpisala potem samo datume v tistem določenem tednu. Recimo to kar sem napisal zgoraj mi vrne pravi rezultat, vendar nisem prepričan, če bo zadeva delovala tak kot treba, da nisem česa spregledal, ker nisem izkušen programer, ampak se, tako ko si reku, bolj za hobi ukvarjam.

Poldi112 ::

Saj št. tedna tudi lahko dobiš:

W ISO-8601 week number of year, weeks starting on Monday (added in PHP 4.1.0) Example: 42 (the 42nd week in the year)

Da preveriš če prav dela pa testiraš :)
Where all think alike, no one thinks very much.
Walter Lippmann, leta 1922, o predpogoju za demokracijo.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Bliža se usodni datum za GPS

Oddelek: Novice / Znanost in tehnologija
207910 (3535) darkolord
»

Operacija sprednjih križnih vezi

Oddelek: Loža
3712600 (11237) sodnicaN
»

asp.net calendar

Oddelek: Programiranje
6741 (596) Mitja Bonča
»

Prazniki v sloveniji? Kateri vsi so?

Oddelek: Loža
95872 (3805) joze67
»

Iskanje naslednje ponovitve - najboljši algoritem (strani: 1 2 )

Oddelek: Programiranje
724248 (3306) Thomas

Več podobnih tem