giorno di inizio e fine delle settimane

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
riporta per un anno dato il giorno di inizio e fine delle settimane in accordo con ISO 8601
PHP:
<?php
function settimane($num_set,$anno){
	$s=$num_set-1;
	/*settimana ISO 8601
	se 1° gennaio = lunedì, martedì, mercoledì o giovedì sono nella 1° dell'anno
	se 1° gennaio = venerdì, sabato o domenica sono nell'ultima settimana dell'anno precedente
	*/
	/*calcolo che giorno è il 1° gennaio
	0= dom
	1= lun
	2= mar
	3= mer
	4= gio
	5= ven
	6= sab
	*/
	$primo_anno=mktime(0,0,0,1,1,$anno);//timestamp del primo giorno
	$primo_giorno=date("w", $primo_anno);//da 0 a 6
	$set[2]=52;//numero normale di settimane in un anno
	//verifico se per giovedì
	if($primo_giorno==4){
		$set[2]=53;
	}
	//se bisestile  di mercoledì
	//verificho se bisestile e se inizia di mercoledì
	if(checkdate(2,29,$anno) && $primo_giorno==3){//se non è bisestile checkdate = FALSE
		$set[2]=53;
	}
	switch($primo_giorno){
		case 1: $delta= -0*(24*60*60); break;
		case 2: $delta= -1*(24*60*60); break;
		case 3: $delta= -2*(24*60*60); break;
		case 4: $delta= -3*(24*60*60); break;
		case 5: $delta= 3*(24*60*60); break;
		case 6: $delta= 2*(24*60*60); break;
		case 0: $delta= 1*(24*60*60); break;
	}
	$primo_gg_set=($s*7*24*60*60)+$primo_anno+$delta;
	$ultimo_gg_set=$primo_gg_set+(6*24*60*60);
	$mese=array("","gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre");
	$set[0]=date("d", $primo_gg_set)." ".$mese[date("n",$primo_gg_set)]." ".date("Y",$primo_gg_set);
	$set[1]=date("d", $ultimo_gg_set)." ".$mese[date("n",$ultimo_gg_set)]." ".date("Y",$ultimo_gg_set);
	return $set;
}//fine function
//*********TEST************
$a=2013;//provando con 2020 si nota che le settimane risultano 53
$num_set=52;
for($k=1; $k <=$num_set;$k++){
	$vedi=settimane($k,$a);
	$num_set=$vedi[2];
	echo "anno $a: $k ° settimana va dal ".$vedi[0]." al ".$vedi[1]."<br />";
}
?>
 
Discussioni simili
Autore Titolo Forum Risposte Data
O Buon Giorno a tutti Presentati al Forum 1
N cambio icona meteo giorno/notte PHP 2
D Testo colorato in base a giorno settimana PHP 12
L Creare un countdown con giorno specifico della settimana PHP 3
S NVR Hikvision : è on-line solo di giorno senza nessun motivo IP Cam e Videosorveglianza 17
A [Java]Date diminuite di un giorno su db MySQL Java 0
A sommare valori a video per lo stesso giorno jQuery 1
R Buon giorno ai webmaster del forum Presentati al Forum 6
V calcolo giorno di fine mese ad una seconda data jQuery 0
D [Javascript] Script che consenta di cambiare un'immagine in base all'ora del giorno della settimana Javascript 11
L [PHP] codifica file utf8-windows .. giorno dopo trovo utf-8 mac PHP 3
A buon giorno a tutti Presentati al Forum 2
A [PHP] buon giorno a tutti PHP 0
D giorno a tutti :) purtroppo ho un grandissimo problema :( Presentati al Forum 0
giuseppe_123 [PHP] Estrarre giorno mese e anno da una data PHP 2
M Buon giorno a tutti grazie di avermi inserito nel forum Presentati al Forum 1
Z [PHP] Calcolo giorno PHP 5
ilsuomillennio Buon giorno a tutti Presentati al Forum 2
elpirata [RISOLTO]Stampare giorno della settimana in tabella php PHP 6
L buon giorno a tutti Presentati al Forum 1
elpirata [PHP] Ricavare giorno della settimana da un campo data PHP 9
Marcello.Fiore Buon Giorno Presentati al Forum 1
D [vendo] script php programmazione televisiva del giorno 33 canali Altri Annunci 0
G Buon Giorno a tutti! :D Presentati al Forum 0
c-tel buon giorno a tutti Presentati al Forum 2
S buon giorno a tutti.. Presentati al Forum 0
C Prelevare i record che appartengono al giorno più vecchio del mese. PHP 11
C Giorno Presentati al Forum 1
J Pannelli in Jquery che si aprono a seconda del giorno della settimana jQuery 4
G Effettuare query con data del giorno in corso PHP 3
M buon giorno a tutti!! Presentati al Forum 3
G [VENDO] Banner 125x125 Colonna Lato Sinistro - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
P [VENDO]PROMUOVI la tua attività A SOLO 1 EURO/giorno Vendere e Acquistare pubblicita' online 2
G [VENDO] Banner 468x60 Zona Bassa Footer - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
G [VENDO] Link Colonna Laterale - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
Frank10 1000 visite e guadagno neanche 1€ al giorno Guadagnare col Sito 3
R [VENDO]banner su sito con 900 visite al giorno Vendere e Acquistare pubblicita' online 4
G [VENDO] Banner 125x125 Zona Alta Header - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
M [risolto] data giorno in php PHP 6
G [VENDO] Backlink A Rotazione - advhits.com (2500 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
G [VENDO] Annuncio Testuale Colorato A Rotazione - advhits.com (2500 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
G [VENDO] Backlink Fisso - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
G [VENDO] Backlink A Rotazione - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
G [VENDO] Link A Rotazione - advhits.com (3000 Unici/Giorno) (Sconto 50%) Vendere e Acquistare pubblicita' online 0
G [VENDO] Popunder Colorato Animato A Rotazione - advhits.com (3000 Unici/Giorno) Vendere e Acquistare pubblicita' online 0
G [VENDO] Link Fisso - advhits.com (3000 Unici/Giorno) (Sconto 50%) Vendere e Acquistare pubblicita' online 0
G [VENDO] Link Fisso - advhits.com (3000 Unici/Giorno) (Sconto 50%) Vendere e Acquistare pubblicita' online 0
G [VENDO] Link Fisso - advhits.com (3000 Unici/Giorno) (Sconto 50%) Vendere e Acquistare pubblicita' online 0
A Ciao a tutti.. mi sembra il rpimo giorno di scuola..!! Presentati al Forum 2
G [VENDO] Banner 468x60 Fisso - advhits.com (2500 Unici/Giorno) Vendere e Acquistare pubblicita' online 0

Discussioni simili