Conti giorni e mese

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
Salve a tutti...

Vorrei fare un calcolo che mi sembra un pò complicato..

Allora, se selezionassi ogni mese fino a dicembre 2012, come si fa a calcolare automaticamente a partire da questo mese

01/04/2012
01/05/2012
01/06/2012
01/07/2012
01/08/2012
01/09/2012
01/10/2012
01/11/2012
01/12/2012

Mentre, se selezionassi ogni 14 giorni, come si fa? Tipo, a partire da questo giorno

Dal 05/04/2012 al 18/04/2012
Dal 19/04/2012 al 02/05/2012
Dal .... al ...
fino a dicembre 2012?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova questa funzione:
PHP:
<?php
function getIntervals(DateTime $startDate, DateTime $endDate, DateInterval $interval)
{
    while (true) {
        $startDate->add($interval);

        if ($startDate->getTimestamp() > $endDate->getTimestamp()) {
            break;
        }

        $dates[] = $startDate->getTimestamp();
    }

    $dates = array_map(function($time) {
        return date('d/m/Y', $time);
    }, $dates);

    return $dates;
}
?>
Questo script:
PHP:
print_r(getIntervals(
    new DateTime(date('01-m-Y')),
    new DateTime('31-12-2012'),
    DateInterval::createFromDateString('14 days'))
);
print_r(getIntervals(
    new DateTime(date('01-m-Y')),
    new DateTime('31-12-2012'),
    DateInterval::createFromDateString('1 month'))
);
Stampa a video:
Codice:
Array
(
    [0] => 15/04/2012
    [1] => 29/04/2012
    [2] => 13/05/2012
    [3] => 27/05/2012
    [4] => 10/06/2012
    [5] => 24/06/2012
    [6] => 08/07/2012
    [7] => 22/07/2012
    [8] => 05/08/2012
    [9] => 19/08/2012
    [10] => 02/09/2012
    [11] => 16/09/2012
    [12] => 30/09/2012
    [13] => 14/10/2012
    [14] => 28/10/2012
    [15] => 11/11/2012
    [16] => 25/11/2012
    [17] => 09/12/2012
    [18] => 23/12/2012
)
Array
(
    [0] => 01/05/2012
    [1] => 01/06/2012
    [2] => 01/07/2012
    [3] => 01/08/2012
    [4] => 01/09/2012
    [5] => 01/10/2012
    [6] => 01/11/2012
    [7] => 01/12/2012
)
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
ti do un esempio

PHP:
<?php
$data_partenza="19/04/2012";
//la data deve essere trasformata in formato anglosassome mm/gg/yy
$de=explode("/",$data_partenza);
$d_p=$de[1]."/".$de[0]."/".$de[2];
//calcolo il timestamp della data
$d_p_timestamp=strtotime($d_p);//espresso in secondi
$add_gg=14;//giorni da aggiungere
//aggiungo i giorni in secondi =($add_gg  meno 1) per 24 ore per 6o minuti per 60 secondi
$d_a_timestamp=$d_p_timestamp+(($add_gg-1)*24*60*60);
//converto la data ottenuta in formato umano
$data_arrivo=date("d/m/Y",$d_a_timestamp);
echo "dal $data_partenza al $data_arrivo<br>";
?>
 

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
Funziona, ma una domanda non riesco a fare una cosa...

Come si fa a sapere quante settimane sono partendo a questo giorno?
In senso che, se scrivo la data di oggi 05/04/2012 fino al 31/12/2012 quante settimane sono?

Faccio un'esempio, oggi è il 05/04/2012 e fino al 31/12/2012 sono 30 settimane e faccio il calcolo dal giorno al giorno a settimana fino al 31/12/2012 e sarebbe
dal 05/04/2012 al 12/04/2012
dal 12/04/2012 al 19/04/2012 e prosegue la lista fino a fine dicembre...

come si fa? Uso date("W") ma non funziona..
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Quale dei due stai usando? Il mio o quello di borgo?

Per calcolarlo, comunque, prova così:
PHP:
<?php
function getWeek()
{
    $week = ceil(date('d') / 7);

    if ($week < 1) {
        $week = 1;
    }
}
?>
 
Ultima modifica:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Una classe apposita che sottopongo al vostro giudizio

PHP:
class datCal
{ 
 public function crea_calendario($data_inizio,$data_fine,$limit){
	list($anno,$mese,$giorno) = explode("-",$data_inizio);
	$differenza = round((strtotime($data_fine) - strtotime($data_inizio))/(86400));
	for ($i = $limit; $i <= $differenza; $i++) {
		$data_per_calendario = date("Y-m-d",mktime(0,0,0,$mese,$giorno+$i,$anno));
		$date_per_calendario[] =  $data_per_calendario;
 	}
	return $date_per_calendario;
 }
}
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Funziona, ma una domanda non riesco a fare una cosa...

Come si fa a sapere quante settimane sono partendo a questo giorno?
In senso che, se scrivo la data di oggi 05/04/2012 fino al 31/12/2012 quante settimane sono?

Faccio un'esempio, oggi è il 05/04/2012 e fino al 31/12/2012 sono 30 settimane e faccio il calcolo dal giorno al giorno a settimana fino al 31/12/2012 e sarebbe
dal 05/04/2012 al 12/04/2012
dal 12/04/2012 al 19/04/2012 e prosegue la lista fino a fine dicembre...

come si fa? Uso date("W") ma non funziona..
Per la differerenza in settimane dai uno sguardo a questo tutorial
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
A che serve una classe con un solo metodo? Puoi benissimo usare una funzione.
Ad integrarla con altri metodi, ad esempio per la formattazione delle date, per la creazione di un calendario con nomi dei giorni etc.
E' uno snippet di una classe più ampia.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
piccola intromissione aggiuntiva.
secondo me usare le date in formato umano (italiano o albionico) è una mania controproducente.
se si usano le date in formato timestamp si facilitano enormemente i calcoli e i confronti
l'unica accortezza è trasformare in timestamp le date provenienti da input di un form, poi si fanno senza problemi tutti i calcoli
PHP:
<?php
//se le date sono in timestamp
$giorni_tra=($data_2-$data_1)/(24*3600);//eventualmente arrotondando
$settimane_tra($data_2-$data_1)/(7*24*3600);
//e volendo semplicemente ricavare settimane giorni ore minuti e secondi
//con divisioni intere e resto
//poi per visualizzare/stampare (è l'unico momento in cui serve) eventualmente una data in umano
echo "tra il ".date("d/m/Y",$data_1)."e il ".date("d/m/Y",$data_2)." ci sono $giorni_tra giorni";//o settimane e volendo la formattazione della data come si vuole
?>
 

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
Ce l'ho fatta...
SOno riuscito a mettere quante settimane sono a partire oggi fino al 31 dicembre e vorrei sapere come si fa poi a dividere?

Cioè, esempio sono 52 settimane, come faccio a dividere percependo dal giorno al giorno? Tipo

la prima settimana è dal 05/04/2012 al 12/04/2012
la seconda è dal 12/04/2012 al 19/04/2012
la terza......etc..
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Quale metodo hai usato? Mostraci il codice per poterlo modificare.
 
Ultima modifica:

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
ciao
piccola intromissione aggiuntiva.
secondo me usare le date in formato umano (italiano o albionico) è una mania controproducente.
se si usano le date in formato timestamp si facilitano enormemente i calcoli e i confronti

Usi il TIMESTAMP anche per memorizzare il dato su DB?
 

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
Ecco

Usando questo codice con 52 settimane

PHP:
$numWeeks_ok = range(1, 52);


foreach($numWeeks_ok as $ognimese)
{
	
echo date("Y-m-d", mktime(0, 0, 0, date("m"), date("d", strtotime("+ ". $ognimese ." week")), date("Y")))

}

FUnziona ma errato, visualizza tutto la data con il mese 04, cioè esempio
05/04/2012 -> 12/04/2012 -> 19/04/2012 -> 26/04/2012 -> 03/04/2012 (ripete sempre 04 che sarebbe aprile) perchè? cosa c'è di errore?
 
Ultima modifica di un moderatore:
Discussioni simili
Autore Titolo Forum Risposte Data
Alex Black Molti conti personali instagram Annunci servizi di Social Media Marketing 0
S Gestione Conti Correnti/Portafolio in PHP, esistono script? PHP 1
S non mi tornano i conti !! PHP 5
G Query con i giorni della settimana MySQL 10
Z Controllo giorni MYSQL PHP 0
D Modem Asus non trasmette ogni 3/4 giorni Reti LAN e Wireless 2
C Esclusione dei giorni festivi Javascript 0
Alex_70 Anno mesi giorni PHP 40
T PHP: variabile che cambia ogni 5 giorni... PHP 3
P [PHP] Aggiungere giorni e stampare risultato da data inserita in input PHP 3
maxnegri Conoscere giorni della settimana fra due date con php PHP 2
bubino8 [PHP] Differenze Secondi Minuti Giorni PHP 4
otto9due Selezionare singoli giorni su datepiker jQuery 1
V [Javascript] Trasformare secondi a giorni, ore, minuti Javascript 12
xone [PHP] Contare numero dei giorni tra data_in e data_out PHP 11
diego66 [Javascript] Calcolare giorni lavorativi comprese tra due date Javascript 0
otto9due Aggiungere n. giorni ad una data nel datepiker jQuery 4
M Inviare mail dopo due giorni lavorativi PHP 3
M Calcolo giorni lavorativi tra due date (escluse le feste comandate) PHP 6
F aggiungere 7 giorni alla data odierna PHP 2
M Calendario con 28 giorni anche per i mesi successivi PHP 2
Trapano Campo data + 90 giorni PHP 4
C Incrementare giorni in Italiano PHP 2
A PHP calendario, come inserire i giorni precedenti? PHP 1
Longo8 LABEL dinamica con i giorni / mesi / anni dal 1900 fino ad ora PHP 3
H Record con scadenza in giorni PHP 2
M Script Java giorni della settimana Javascript 0
P Status: Non attivo! dopo 5 giorni - Link exchange Supporto Mr.Webmaster 0
D urgente please, devo realizzare un sito in 12 giorni Discussioni Varie 14
1 (Era: aiuto!) Fare un sito in 6 giorni HTML e CSS 7
S [OFFERTA] Spazi Pubblicitari Solo per pochi giorni Vendere e Acquistare pubblicita' online 0
G Funzione che mi dia i giorni della settimana PHP 2
R essere indicizzati da google in pochi giorni SEO e Posizionamento 2
C Giorni Lavorativi Database 1
P Aggiungere Giorni Ad Una Data In Sql. MS Access 0
S Script - Giorni trascorsi dall'inizio dell'anno Javascript 6
zmassimo 42 Giorni Dopo Il Furto Mi E' Riapparsa La Madonna Discussioni Varie 3
A access: anni, mesi e giorni MS Access 1
peppoweb Hackmeeting 2003, pochi giorni al via Discussioni Varie 0
R Copertura search console in picchiata da qualche mese SEO e Posizionamento 0
A Sottoquery con group by per mese MySQL 0
Z [PHP] Conteggi se c'è o no il mese agosto PHP 1
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
Cloud Register.it Partner Prova i VPS Register.it : Il primo mese sconti fino al 50% su tutte le configurazioni Server Dedicati e VPS 0
V calcolo giorno di fine mese ad una seconda data jQuery 0
A [VENDO] ACCOUNT NETFLIX 4 SCHERMI+ULTRA HD DURATA 1 MESE Altri Annunci 2
giuseppe_123 [PHP] Estrarre giorno mese e anno da una data PHP 2
S [VENDO] pagina facebook nicchia estrattori/centrifughe (genera 100€/mese) Annunci servizi di Social Media Marketing 1
G [PHP] Problema nel passaggio del valore mese PHP 8
il_bauscia OVH VPS Cloud a 10 Euro / Mese: affidabile? Server Dedicati e VPS 1

Discussioni simili