• Home
  • Forum
  • Fare Web
  • PHP

Conti giorni e mese

  • Creatore Discussione Creatore Discussione z.cristiano
  • Data di inizio Data di inizio 5 Apr 2012
Z

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
  • 5 Apr 2012
  • #1
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
28
Roma
alessandro1997.netsons.org
  • 5 Apr 2012
  • #2
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.044
150
63
PR
www.borgo-italia.it
  • 5 Apr 2012
  • #3
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

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
  • 5 Apr 2012
  • #4
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
28
Roma
alessandro1997.netsons.org
  • 5 Apr 2012
  • #5
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: 5 Apr 2012
Z

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
  • 5 Apr 2012
  • #6
Nessuno dei quei due..
:-(
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
  • 5 Apr 2012
  • #7
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;
 }
}
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
28
Roma
alessandro1997.netsons.org
  • 5 Apr 2012
  • #8
A che serve una classe con un solo metodo? Puoi benissimo usare una funzione.
 
Ultima modifica di un moderatore: 5 Apr 2012

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
  • 5 Apr 2012
  • #9
z.cristiano ha scritto:
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..
Clicca per allargare...
Per la differerenza in settimane dai uno sguardo a questo tutorial
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
  • 5 Apr 2012
  • #10
alessandro1997 ha scritto:
A che serve una classe con un solo metodo? Puoi benissimo usare una funzione.
Clicca per allargare...
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.044
150
63
PR
www.borgo-italia.it
  • 5 Apr 2012
  • #11
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

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
  • 5 Apr 2012
  • #12
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
  • 5 Apr 2012
  • #13
Quale metodo hai usato? Mostraci il codice per poterlo modificare.
 
Ultima modifica: 5 Apr 2012

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
  • 5 Apr 2012
  • #14
borgo italia ha scritto:
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
Clicca per allargare...

Usi il TIMESTAMP anche per memorizzare il dato su DB?
 
Z

z.cristiano

Utente Attivo
16 Giu 2007
145
0
16
  • 6 Apr 2012
  • #15
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: 6 Apr 2012

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
  • 6 Apr 2012
  • #16
ciao
Eliox ha scritto:
Usi il TIMESTAMP anche per memorizzare il dato su DB?
Clicca per allargare...
generalmente si : data int 15 [not null][default quello che mi serve, se serve]
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

S
VENDO PAGINA FACEBOOK SUPER SCONTI ONLINE CON SITO E ALTRO
  • super_sconti_online
  • 5 Feb 2020
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
1K
Annunci servizi di Social Media Marketing 5 Feb 2020
super_sconti_online
S
G
[VENDO] Realizzazione Siti Web *Sconti Natale*
  • gio1999
  • 25 Dic 2018
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
1K
Offerte e Richieste di Lavoro e/o Collaborazione 25 Dic 2018
gio1999
G
  • In evidenza
Partner Prova i VPS Register.it : Il primo mese sconti fino al 50% su tutte le configurazioni
  • Cloud Register.it
  • 21 Mar 2018
  • Server Dedicati e VPS
Risposte
0
Visite
2K
Server Dedicati e VPS 21 Mar 2018
Cloud Register.it
Molti conti personali instagram
  • Alex Black
  • 5 Nov 2017
  • Annunci servizi di Social Media Marketing
Risposte
0
Visite
929
Annunci servizi di Social Media Marketing 5 Nov 2017
Alex Black
S
Gestione Conti Correnti/Portafolio in PHP, esistono script?
  • SaintTDI
  • 11 Dic 2015
  • PHP
Risposte
1
Visite
2K
PHP 14 Dic 2015
SaintTDI
S
M
Regole Prezzi Sconti
  • Mediavalue
  • 20 Lug 2015
  • Magento
Risposte
4
Visite
3K
Magento 22 Lug 2015
Mediavalue
M
L
sconti in base al numero di iscritti
  • Luca De Franceschi
  • 19 Mar 2015
  • jQuery
Risposte
1
Visite
1K
jQuery 19 Mar 2015
criric
S
non mi tornano i conti !!
  • ste75
  • 28 Lug 2014
  • PHP
Risposte
5
Visite
1K
PHP 30 Lug 2014
ste75
S
G
cerco lavoro retribuito articolista e scrittrice racconti
  • gloria21
  • 27 Mag 2012
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 27 Mag 2012
gloria21
G
M
[VENDO]Realizzazione siti web professionali e SEO con sconti fino al 100%!
  • mattyfog
  • 26 Lug 2010
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 26 Lug 2010
mattyfog
M
S
[Vendo] Script per sconti e acquisti come citydeal
  • studioideato
  • 17 Mag 2010
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
0
Visite
2K
Offerte e Richieste di Lavoro e/o Collaborazione 17 Mag 2010
studioideato
S
V
Sito e Logo Per il Santopalato Ristorante, Pistoia / raffaelevisconti.it
  • viscoWeb
  • 28 Dic 2009
  • Presenta il tuo Sito
Risposte
2
Visite
2K
Presenta il tuo Sito 30 Dic 2009
simonsaint
S
C
Racconti di viaggi
  • creafilm
  • 11 Apr 2008
  • Presenta il tuo Sito
Risposte
0
Visite
734
Presenta il tuo Sito 11 Apr 2008
creafilm
C
Sconti per gli utenti di Console-mania!!
  • sbobby
  • 13 Set 2007
  • Presenta il tuo Sito
Risposte
0
Visite
978
Presenta il tuo Sito 13 Set 2007
sbobby
A
Agenziasg offre sconti hotel voli per le vostre vacanze
  • agenziasg
  • 20 Mag 2007
  • Presenta il tuo Sito
Risposte
0
Visite
951
Presenta il tuo Sito 20 Mag 2007
agenziasg
A
G
per chi ama la neve e i racconti delle nevicate..
  • gabricn
  • 11 Gen 2007
  • Presenta il tuo Sito
Risposte
0
Visite
1K
Presenta il tuo Sito 11 Gen 2007
gabricn
G
Javascript per calcolo sconti
  • frankiedeguello
  • 29 Giu 2005
  • Javascript
Risposte
6
Visite
5K
Javascript 4 Lug 2005
frankiedeguello
J
  • Bloccata
Sconti saldi e tutto il meglio dei negozi di Roma.
  • jump
  • 30 Nov 2004
  • Presenta il tuo Sito
Risposte
4
Visite
2K
Presenta il tuo Sito 29 Nov 2011
timeofweb
T
R
Buongiorni a tutti.
  • RAF66
  • 27 Mar 2022
  • Presentati al Forum
Risposte
1
Visite
334
Presentati al Forum 27 Mar 2022
WmbertSea
G
Query con i giorni della settimana
  • Gae
  • 20 Mar 2022
  • MySQL
Risposte
10
Visite
3K
MySQL 28 Mar 2022
Gae
G
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?