[PHP] Algoritmo per il calcolo della media delle consegne

Rispondi
Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

[PHP] Algoritmo per il calcolo della media delle consegne

Messaggio da Roberto »

Mi trovo a dover scrivere un algoritmo per il calcolo della media delle consegne dei pacchi nel mondo dei trasporti. Per chiunque si trovera' nella stessa mia situazione una delle cose con cui avra' a che fare saranno i giorni validi e quelli no.

Per l'Italia non vanno considerati validi tutti i Sabati e le Domeniche in quanto i mezzi pesanti non possono viaggiare.

Sono inoltre da non considerare validi tutti i giorni festivi che non cadono di Sabato o di Domenica e che ad oggi sono i seguenti:
  • Capodanno (1 gennaio)
  • Epifania (6 gennaio)
  • Lunedì dell'Angelo, o Pasquetta (il lunedì dopo la Pasqua)
  • Festa della Liberazione (25 aprile)
  • Festa dei lavoratori (1 maggio)
  • Festa della Repubblica (2 giugno)
  • Assunzione di Maria Vergine o Ferragosto (15 agosto)
  • Tutti i santi (1 novembre)
  • Immacolata Concezione (8 dicembre)
  • Natale (25 dicembre)
  • S. Stefano (26 dicembre)
Roberto Basile
Roberto
Amministratore
Messaggi: 160
Iscritto il: 19/12/2009, 19:30

Re: Algoritmo per il calcolo della media delle consegne

Messaggio da Roberto »

Per cio' che riguarda la gestione delle festivita' ho pensato di creare un array contenente i timestamp relativi alle singole festivita' calcolati alla mezzanotte e con cui poi fare un raffronto di date. Riporto di seguito una bozza di codice per velocizzare il lavoro di quanti ne avranno necessita':

Codice: Seleziona tutto

$anno = .....; //dovete ricavare l'anno di cui necessitate calcolare le festivita'

$festività = array (
                    mktime(0,0,0,1,1,$anno), //1 Gennaio
                    mktime(0,0,0,1,6,$anno), //6 Gennaio
                    mktime(0,0,0,4,25,$anno), //25 Aprile
                    mktime(0,0,0,5,1,$anno), //1 Maggio
                    mktime(0,0,0,6,2,$anno), //2 Giugno
                    mktime(0,0,0,8,15,$anno), //15 Agosto
                    mktime(0,0,0,11,1,$anno), //1 Novembre
                    mktime(0,0,0,12,8,$anno), //8 Dicembre
                    mktime(0,0,0,12,25,$anno), //25 Dicembre
                    mktime(0,0,0,12,26,$anno)); //26 Dicembre
Per quanto riguarda la festivita' del Lunedi' dopo Pasqua si puo' fare un raffronto a parte oppure prima di creare l'array si calcola la data e la si inserisce assieme alle altre festivita'. In PHP e' possibile usare la seguente funzione:

Codice: Seleziona tutto

int easter_date ([ int $year ] )
Tale funzione riceve l'anno di cui volete calcolare il giorno di pasqua e ritorna il relativo timestamp che incrementato di 24 ore ci da' l'indicazione del timestamp relativo al Lunedi' di Pasquetta.

Codice: Seleziona tutto

$giorno_secondi = 86400;
$pasqua = easter_date($anno);
$pasquetta = $pasqua + $giorno_secondi;
Roberto Basile
Rispondi