SERVEIS INFORMÀTICS
| català | english | español |
Venda de material informàtic
Reparació i muntatge d'ordinadors
Administració i manteniment de xarxes
Recursos web > Calendari > Dia de la setmana

Dia de la setmana


El 21 de Novembre de 2024 és Dijous


Per calcular quin dia de la setmana és utilitzem tres funcions PHP:
function AnyDeTraspas($any)   Per saber si un any és de traspàs
function NumeroDiesMes($mes,$any)   Per saber quants dies te un mes concret
function DiaDeLaSetmana($data)   Per calcular quin dia de la setmana és. Aquesta és la funció principal, la qual utilitza les dues anteriors.
Wikipedia: Any de Traspàs / Calendari Gregorià
// Funció PHP per saber si un any és de traspàs
// Retorna un Boolean: true / false/* Author: arnAu bellavista www.BinariEM.com Gener 2021 */ function AnyDeTraspas($any){ if($any % 4 == 0){ $secular = substr($any, -2); if($secular == '00' and $any % 400 != 0){ return false; }else{ return true; } }else{ return false; } } // Cridem la funció i la guardem una variable boleana $any_de_traspas = AnyDeTraspas('2021');
// Funció PHP per saber quants dies té un mes concret
// Retorna el número de diesfunction NumeroDiesMes($mes,$any){ $dies = 0; if( $mes == 1 or $mes == 3 or $mes == 5 or $mes == 7 or $mes == 8 or $mes == 10 or $mes == 12 ){ $dies = 31; }else if( $mes == 4 or $mes == 6 or $mes == 9 or $mes == 11 ){ $dies = 30; }else if($mes == 2){ $any_de_traspas = AnyDeTraspas($any); if($any_de_traspas){ $dies = 29; }else{ $dies = 28; } } return $dies; }
// Funció PHP principal per saber el dia de la setmana
// Retorna un número de l'1 al 7 (Dilluns-Diumenge)function DiaDeLaSetmana($data){ list($any,$mes,$dia) = explode('-',$data); // Guardem la data en variables separades $dies_passats = 0; // Dies que han passat des de la data 1-1-1 /* El calendari Gregorià funciona per cicles iguals de 400 anys. L'1 de gener de l'any 1 és dilluns. De manera que l'1 de gener de l'any 401 també és dilluns. Igual per l'any 801, 1201, 1601, 2001... */ // Contem quants anys hi ha des de l'inici del cicle de 400 anys $any400 = $any; $any400 = $any % 400; if($any400 == 0){ $any400 = 400; } $anys_falten = $any400 - 1; // Contem quants dies han passat des de 1-1-1 fins l'any consultat for($i=1; $i<=$anys_falten; $i++){ // Mirem si és any de traspàs o no per sumar els dies corresponents $any_traspas = AnyDeTraspas($i); if($any_traspas){ $dies_passats = $dies_passats + 366; // Sumem un any de traspàs }else{ $dies_passats = $dies_passats + 365; // Sumem un any } } // Contem els dies que falten fins els mes consultat for($i=1; $i<$mes; $i++){ $num_dies_mes = NumeroDiesMes($i,$any400); $dies_passats = $dies_passats + $num_dies_mes; } // Contem els dies que falten fins el dia consultat for($i=0; $i<$dia; $i++){ $dies_passats++; } // Mirem a quin dia de la setmana correspon $dia_setmana = $dies_passats % 7; if($dia_setmana == 0){ // Si és 0 posem 7 perquè és diumgenge $dia_setmana = 7; } return $dia_setmana; }