Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,467

    convertire data da formato italiano a formato per mysql

    Salve a tutti,
    dovrei convertire una data tipo 01/03/2019 in 2019-03-01
    Ho sempre fatto il contrario, adesso avrei bisogno di questa conversione.

    Sto provando con
    Codice PHP:
    $arrivo_mysql DateTime::createFromFormat('d/m/Y'"$arrivo")->format('Y-m-d'); 
    Funziona in parte perche' l'anno non lo mostra come 2019 ma come 0019 forse perche' nella tabella faccio entrare 01/03/19

    Ho provato anche a fare un piccolo cambio nel format rendendolo cosi
    Codice PHP:
    $arrivo_mysql DateTime::createFromFormat('d/m/Y'"$arrivo")->format('2019-m-d'); 
    Dovrebbe andar bene o potrei avere qualche problema?

    Come potrei fare?
    Grazie
    Ultima modifica di allin81; 28-02-2019 a 16:34

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    34
    Usa la classe DateTime

    Codice PHP:
    <?php

    $date 
    = new DateTime('01/03/2019');
    echo 
    $date->format('Y-m-d');

  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,467
    si ho visto che funziona, ma adesso il problema sta nell'anno perche' lo faccio entrare con "19" e non con "2019", come posso risolvere?
    Grazie

  4. #4
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,467
    ok ho modificato direttamente l'inserimento, adesso lo faccio entrare con 2019 quindi non piu' problemi
    grazie per l'aiuto

    Edit
    Ho un altro piccolo problema, dovrei contare il numero di notti tra 2 date (arrivo e partenza di un albergo) e sto provando cosi' ma non va...

    Codice PHP:
    $arrivo=$_GET['arrivo'];$partenza=$_GET['partenza'];

    $arrivo_mysql = new DateTime("$arrivo");$arrivo_mysql=$arrivo_mysql->format('Y-m-d');
    $partenza_mysql = new DateTime("$partenza");$partenza_mysql=$partenza_mysql->format('Y-m-d');
    //CONTO IL NUMERO DI NOTTI
    $datetime1 = new DateTime($arrivo_mysql);
    $datetime2 = new DateTime($partenza_mysql);
    $interval $datetime1->diff($datetime2);
    $mostra_notti=$interval->format('%a');
    echo
    "$mostra_notti"
    Ultima modifica di allin81; 28-02-2019 a 17:21

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,467
    C'e' un problema

    Nel tuo codice, se cerco di convertire una data di dicembre mi da errore, per esempio 28 dicembre 2019, cosi'
    Codice PHP:
    $date = new DateTime('28/12/2019');echo $date->format('Y-m-d'); 
    Forse perche' la data deve essere messa con il trattino e non con lo slash? (28-12-2019)??

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    34
    Si hai ragione il formato dd/mm/yyyy non viene riconosciuto dal costruttore di DateTime, mm/dd/yyyy invece si e infatti l'esempio 01/03/2019 fungeva in quanto 01 = gennaio, invece 28/12/2019 da errore perchè 28 non esiste come mese

    Puoi vedere i formati accettati dalla doc ufficiale

    Il tuo codice è ok, solo che dovresti passargli il formato della data in maniera corretta, tipo yyyy/mm/dd

    Nota. Quando passi una variabile come argomento di una funzione o di una classe i doppi apici non servono

    new DateTime("$arrivo") new DateTime($arrivo)

  7. #7
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,467
    Quote Originariamente inviata da Flaviors200 Visualizza il messaggio

    Il tuo codice è ok, solo che dovresti passargli il formato della data in maniera corretta, tipo yyyy/mm/dd
    Quindi come devo passarla in maniera corretta? Con le date sono una frana...
    Io credevo che il problema era il trattino al posto dello slash...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2019
    residenza
    Sicilia
    Messaggi
    34
    Ciao, come dice la doc che ti ho linkato tra i formati accettati ci sono


    • mm/dd/yyyy
    • yyyy/mm/dd
    • dd-mm-yyyy

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2014
    Messaggi
    425
    volendo sempre avere certezze del risultato da ottenere, preferisco usare questa notazione
    Codice PHP:
    function dateConv($dt$fin='d/m/Y'$fout='Y-m-d') {
        
    $dt DateTime::createFromFormat($fin$dt);
        return 
    $dt->format($fout);
    }

    echo 
    dateConv("28/12/2019")."<br /><br />";
    echo 
    dateConv("28-Dec-2019""j-M-Y")."<br /><br />"
    eliminando i rischi di una cattiva interpretazione della data

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 © 2019 vBulletin Solutions, Inc. All rights reserved.