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à
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;
}
// Retorna un Boolean: true / false
// Funció PHP per saber quants dies té un mes concret
// Retorna el número de dies
// Funció PHP principal per saber el dia de la setmana
// Retorna un número de l'1 al 7 (Dilluns-Diumenge)