Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    estrazione giorno, mese, anno

    E' un po' di tempo che sto con questo problema.
    ho due date di partenza:
    Codice PHP:
    //    $partenza = 02/03/2013 10:37:32
    //    $fine = 04/03/2013 22:09:20
    //      sono due variabili che mi vengono restituite dal codice 
    da queste due date debbo estrarre i rispettivi giorni, mesi, anni.
    Faccio così:
    Codice PHP:
    $a1 strtotime($partenza);
    $a2 strtotime($fine);
    $partenza_gg date('d'$a1);
    $partenza_mm date('m'$a1);
    $partenza_aa date('Y'$a1);
        
    $fine_gg date('d'$a2);
    $fine_mm date('m'$a2);
    $fine_aa date('Y'$a2); 
    Dovrei ottenere i giusti valori però facendo un test per leggere i vari valori ottengo i giorni ed i mesi invertiti.
    Questo è il test che eseguo:
    Codice PHP:
    echo $partenza "
    \n"
    ;
    echo 
    $a1 "
    \n"
    ;
    echo 
    $partenza_gg "
    \n"
    ;
    echo 
    $partenza_mm "
    \n"
    ;
    echo 
    $partenza_aa "
    \n"
    ;
        
    echo 
    $fine "
    \n"
    ;
    echo 
    $a2 "
    \n"
    ;
    echo 
    $fine_gg "
    \n"
    ;
    echo 
    $fine_mm "
    \n"
    ;
    echo 
    $fine_aa "
    \n"

    e questo è quel che ottengo:
    02/03/2013 10:37:32
    1359884252
    03
    02
    2013
    04/03/2013 22:09:20
    1365019760
    03
    04
    2013
    Sicuramente c'è uno sbaglio da parte mia ma non riesco a raccapezzarmi.
    Vi ringrazio per l'aiuto che mi darete.

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    La funzione strtotime cito:

    The function expects to be given a string containing an English date format and will try to parse that format into a Unix timestamp
    In cui ovviamente il formato è mm/dd/YY.

    Ecco perchè l'interpretazione della stringa porta alla scambio di giorno e mese.

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Grazie Grino
    Non riuscivo proprio a spiegarmi quel comportamento strano.
    Ora mi comporterò di conseguenza

  4. #4
    Per completezza ecco come ho risolto.
    Ho rinunciato ad usare le funzioni delle date ma ho preferito usare list e explode

    Codice PHP:
    list($partenza_gg$partenza_mm$partenza_aa$hour$minute) = explode('[/ :]'$partenza); 
    list(
    $fine_gg$fine_mm$fine_aa$hour$minute) = explode('[/ :]'$fine); 
    Dopo continuo l'elaborazione con le porzioni che mi interessano

  5. #5
    Odio contraddirmi
    continuando con le prove ho notato una cosa:
    usando explode come mostrato sopra lo script può causare delle incongruenze nel risultato che si ottiene
    Ho notato invece che usando split il risultato è più attendibile.
    Ma split non viene dichiarato DEPRECATED dal manuale PHP.net?

  6. #6
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    La explode() non accetta come argomento delimitatore un pattern, ma una semplice stringa. La sostituta di split è preg_split().

    ps: questo raffreddore non mi fa dormire!!!

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  7. #7
    Ciao Grino
    Ti ringrazio per le delucidazioni che mi hai fornito. E' certo che da solo non ci sarei arrivato tant'è che nelle istruzioni ho lasciato il semplice split
    E meno male che le istruzioni sono in una funzione personale. Così posso modificare il solo file delle funzioni.

    PS
    Tanti auguri per il tuo raffreddore, inevitabile per i tempi che corrono.


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.