View Full Version : [PHP] Ricavare tutti i martedì del mese?
Esiste una funzione che mi permette di ricavare tutti i martedì o qualsiasi altro/i giorno della settimana di un certo mese?
Se no, come potrei fare?
antenore
05-10-2009, 14:07
Esiste una funzione che mi permette di ricavare tutti i martedì o qualsiasi altro/i giorno della settimana di un certo mese?
Se no, come potrei fare?
A memoria mi pare con time - strtotime, prova a cercare con google ;)
Ho fatto questa al volo, ma si poteva fare in tanti altri modi, stampa direttamente l'elenco delle date del mese a cui corrisponde il giorno cercato.
id_giorno corrisponde al numero assegnato dalla funzione PHP "date", cioè:
0 => Domenica
1 => Lunedì
...
...
6 => Sabato
function giorni_del_mese($id_giorno,$mese,$anno)
{
// Ottengo un array così strutturato: $info_mese[0] -> id del primo giorno del mese; $info_mese[1] -> numero di giorni del mese
$info_mese = explode('|',date("w|t",mktime(0, 0, 0, $mese, 1, $anno)));
// Numero di giorni tra il primo del mese e la prima occorrenza del giorno cercato nel mese
$distanza_dal_primo = $id_giorno >= $info_mese[0] ? $id_giorno-$info_mese[0] : $id_giorno-$info_mese[0]+7;
// Prima occorrenza del giorno cercato del mese
$giorno = $distanza_dal_primo + 1;
// Stampa le date coincidenti con il giorno del mese cercato
while ($giorno <= $info_mese[1])
{
echo $giorno.' - '.$mese.' - '.$anno.'<br />';
$giorno += 7;
}
}
$mese_ = 10;
$anno_ = 2009;
$id_giorno_ = 2; // Martedì
giorni_del_mese($id_giorno_,$mese_,$anno_);
ciao, e se volessi tutti i martedì e mercoledì ?
Quindi più $id_giorno della stessa settimana
MadJackal
08-10-2009, 19:23
ciao, e se volessi tutti i martedì e mercoledì ?
Quindi più $id_giorno della stessa settimana
Esegui la funzione due volte :Prrr:
trasforma la funzione in modo che ritorni un vettore con le date, così poi puoi richiamare la funzione in questo modo:
$martedi_del_mese = giorni_del_mese($id_martedi,$mese,$anno);
$mercoledi_del_mese = giorni_del_mese($id_mercoledi,$mese,$anno);
dove $martedi_del_mese e $mercoledi_del_mese sono due array.
Grazie, ho risolto.
Posto il codice in caso servisse a qualcun'altro
foreach($this->giorni_anno($multiples_days_from) as $giorno){
$string[] = $giorno;
}
function giorni_anno($ids_giorno)
{
$years[0] = date('Y') - 1;
$years[1] = date('Y');
$years[2] = date('Y') + 1;
foreach($years as $year){
for($month = 1; $month <= 12; $month++){
foreach($ids_giorno as $id_giorno){
// Ottengo un array così strutturato: $info_mese[0] -> id del primo giorno del mese; $info_mese[1] -> numero di giorni del mese
$info_mese = explode('|',date("w|t",mktime(0, 0, 0, $month, 1, $year)));
// Numero di giorni tra il primo del mese e la prima occorrenza del giorno cercato nel mese
$distanza_dal_primo = $id_giorno >= $info_mese[0] ? $id_giorno-$info_mese[0] : $id_giorno-$info_mese[0]+7;
// Prima occorrenza del giorno cercato del mese
$giorno = $distanza_dal_primo + 1;
// Stampa le date coincidenti con il giorno del mese cercato
while ($giorno <= $info_mese[1])
{
$giorni[] = date('d-m-Y', mktime(0, 0, 0, $month, $giorno, $year));
$giorno += 7;
}
}
}
}
return $giorni;
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.