Aflarea saptamanii din care face parte o data

Astazi m-am luptat ceva timp cu o problema de care cred ca s-au mai lovit si altii. Am o data calendaristica si vreau sa afisez din ce saptamana face parte. De exemplu, 14 aprilie 2010 (14-04-2010) face parte din saptamana 12-04-2010 – 14-04-2010.

Asadar, pentru exemplul nostru: 14-04-2010

$day = '14';
$month = '04';
$year = '2010';

Pentru aceasta trebuie sa aflam a cata zi din saptamana este:

$unixdate = mktime( 12, 0, 0, $month, $day, $year );
$dayofweek = date("w", $unixdate);

Pentru a afla ziua de luni dinainte de aceasta data:
$monday = date(‘Y-m-d’, mktime(0, 0, 0, date(‘m’, $unixdate), date(‘d’, $unixdate) – ($dayofweek – 1), date(‘Y’, $unixdate)));

Pentru a afla ziua de duminica dupa aceasta data:
$sunday = date(‘Y-m-d’, mktime(0, 0, 0, date(‘m’, $unixdate), date(‘d’, $unixdate) + (7 – $dayofweek), date(‘Y’, $unixdate)));

In final:

echo 'Data face parte din saptamana '.$monday.' - '.$sunday;

Bineinteles exemplul poate fi folosit pentru a afla orice data daca adaugam sau scadem un numar orecare de zile la o data stiuta. Nu trebuie decat inlocuita partea bolduita cu numarul de zile pe care dorim sa le adaugam sau scadem.