Visualizzazione risultati 1 fino 9 di 9

Discussione: Problema con funzione data

  1. #1
    arcieribiella non è connesso Neofita
    Data registrazione
    31-10-2012
    Messaggi
    7

    Predefinito Problema con funzione data

    Salve a tutti,
    ho creato una funzione in php che mi permette di trasformare la data dal formato "aaaa-mm-gg" a "gg Mes, aaaa" però mi da solo un problema... funziona con tutti i mesi tranne che con agosto e settembre... pensavo fosse un problema di parole riservate ma anche cambiando l'abbreviazione del mese con qualsiasi altra cosa non funziona... ecco il codice
    Codice PHP:
    $aa=substr($DATA_NEWS, 0, 4);
    $mm=substr($DATA_NEWS, 5, 2);
    $gg=substr($DATA_NEWS, 8, 2);
    switch(
    $mm)
    {
    case
    01:
    $mm="Gen";
    break;
    case
    02:
    $mm="Feb";
    break;
    case
    03:
    $mm="Mar";
    break;
    case
    04:
    $mm="Apr";
    break;
    case
    05:
    $mm="Mag";
    break;
    case
    06:
    $mm="Giu";
    break;
    case
    07:
    $mm="Lug";
    break;
    case
    08:
    $mm="Ago";
    break;
    case
    09:
    $mm="Set";
    break;
    case
    10:
    $mm="Ott";
    break;
    case
    11:
    $mm="Nov";
    break;
    case
    12:
    $mm="Dic";
    break;
    }

    $dataformat=$gg." ".$mm.", ".$aa;
    se ci aggiungo
    Codice PHP:
    if($mm=='08'){$mm="Ago";}
    else if(
    $mm=='09'){$mm="Set";}
    e tolgo i 2 case dei mesi problematici funziona ma ovviamente non è la via più corretta...

    Help me please!

  2. #2
    Guest

    Predefinito

    Sinceramente non mi è molto chiaro dov'è l'intoppo
    Ti da errori o cosa?

  3. #3
    arcieribiella non è connesso Neofita
    Data registrazione
    31-10-2012
    Messaggi
    7

    Predefinito

    semplicemente al posto del mese con le 3 lettere mi mette il numero... come se non si cagasse minimamente lo switch

  4. #4
    Guest

    Predefinito

    Ho provato in locale e comunque non capisco perché nel case metti 01,02,.. anziché 1,2,...
    Comunque mi è bastato levare lo 0 e lasciare solo 8 e 9 perché mi funzionasse tranquillamente.

  5. #5
    Guest

    Predefinito

    A me funziona correttamente, stampando GG MMM, AAAA

    Prova con questo:
    Codice PHP:
    $mesi=array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic");

    $aa=substr($DATA_NEWS, 0, 4);
    $mm=$mesi[ ((int)substr($DATA_NEWS, 5, 2)) - 1];
    $gg=substr($DATA_NEWS, 8, 2);

    $dataformat=$gg." ".$mm.", ".$aa;
    javascripter: ho modificato la dichiarazione dell'array che era in stile javascript ( [1, 2, 3] -> array(1, 2, 3) )
    Ultima modifica di javascripter : 13-09-2013 alle ore 11.39.05 Motivo: correzione codice

  6. #6
    arcieribiella non è connesso Neofita
    Data registrazione
    31-10-2012
    Messaggi
    7

    Predefinito

    ok funziona, potresti solo spiegarmi bene la riga: "$mm=$mesi[ ((int)substr($DATA_NEWS, 5, 2)) - 1]; "?

    grazie mille per l'aiuto

  7. #7
    arcieribiella non è connesso Neofita
    Data registrazione
    31-10-2012
    Messaggi
    7

    Predefinito

    Citazione Originalmente inviato da mathis Visualizza messaggio
    Ho provato in locale e comunque non capisco perché nel case metti 01,02,.. anziché 1,2,...
    Comunque mi è bastato levare lo 0 e lasciare solo 8 e 9 perché mi funzionasse tranquillamente.
    mettevo lo zero perchè in teoria lo switch lo fai sulla variabile no? e se la variabile contiene 01,02,ecc i case non dovrebbero essere 01,02 ecc?

    grazie comunque della risposta e dell'aiuto ;)

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da arcieribiella Visualizza messaggio
    ok funziona, potresti solo spiegarmi bene la riga: "$mm=$mesi[ ((int)substr($DATA_NEWS, 5, 2)) - 1]; "?

    grazie mille per l'aiuto
    substr($DATA_NEWS, 5, 2) è una stringa
    con (int) davanti la trasformiamo in un intero (numero del mese)

    Gli array partono da 0 e quindi avevo assegnato un valore a caso a $mesi[0] in modo da rendere più intuitivo il tutto (8, agosto, 10, ottobre)

    Javascripter ha modificato il codice togliendo il primo elemento dell'array, quindi agosto=7, ottobre=9 ecc
    Data questa modifica si è reso necessario sottrarre 1 al tutto.

    Fatto questo basta leggere l'elemento dell'array $mesi corrispondente e assegnarlo a $mm

  9. #9
    arcieribiella non è connesso Neofita
    Data registrazione
    31-10-2012
    Messaggi
    7

    Predefinito

    grazie :)

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •