Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    17

    Modificare una stringa data php

    Salve,
    ho due record in un database data_ita e data_ame,

    data_ita sono del tipo ggmmaaaa

    data_ame sono del tipo aaaaggmm

    devo trasformarli rispettivamente in:

    ggmmaaaa => gg/mm/aaaa
    aaaaggmm =>aaaa/gg/mm

    voglio farlo con le espressioni regolari come faccio a capire dove sta la data,cosiderando anche che le date posono variare dal 1900 al 20?? ?

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    sicuro di doverlo fare con le espressioni regolari? funzioni native nessuna?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Codice PHP:
    <?php
    $data_ita 
    preg_replace("/(\\d\\d)(\\d\\d)(\\d\\d\\d\\d)/""$1/$2/$3"$data_ita);
    $data_ame preg_replace("/(\\d\\d\\d\\d)(\\d\\d)(\\d\\d)/""$3/$2/$1"$data_ame);
    ?>

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    17
    quello che mi chiedo quando mi troverò il giorno 20082008 cioè il 20 agosto 2008 non avrò modo di differenziarlo dal 2008 20 agosto giusto ?

  5. #5
    Non li distingui in base al campo da cui li estrai?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    17
    si infatti l'unico modo per farlo e distinguere in quale campo mi trovo,il mio capo lo voleva che valesse per tutti,ma gli ho già spiegato che non sono merlino e tanto meno lo è il mio pc se leggo un dato ma non so che significato ha come faccio a dirgli come devo trattarlo.
    grazie dell'aiuto come sempre gentilissimi

  7. #7
    No guarda... c'è un modo molto più semplice...

    se la data è ggmmaaaa fai
    Codice PHP:
    $a 20082008;
    $giornosubstr($a02);
    $mese substr($a22);
    $annosubstr($a44);
    $data $giorno '/' $mese '/' $anno
    lascia perdere funzioni machiavelliche...
    http://it.php.net/manual/it/function.substr.php
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  8. #8
    Cristiano
    ---
    Originariamente inviato da rebelia : solo un nerd puo' pensare di tacchinare in un forum di informatica

  9. #9
    Sinceramente proprio tutto non l'ho capito.

    Dovresti avere una sola data nel database, in un campo con formato DATE (yyyy-mm-dd)

    dopo di che quando estrai la formatti come ti pare.

    codice:
    select *, 
    date_format(campo_data, '%d/%m/%Y') as data_ita,
    date_format(campo_data, '%Y/%d/%m') as data_ame
    from tabella ....
    Dal momento che selezionerai data_ita o data_ame saprai di cosa si tratta.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Con un'unica espressione regolare forse è possibile riconoscere entrambe le formattazioni, facendo una cosa tipo:
    Codice PHP:
    $month='0[1-9]|1[0-2]';
    $day='0[1-9]|[12][0-9]|3[01]';
    $year='(?:19|20)\\d{2}';

    $rex="/^(?:($month)($day)($year)|($year)($month)($day))$/";

    $date=preg_replace($rex,'$2$6/$1$5/$3$4',$date); 
    Forzando l'anno ad essere compreso tra il 1900 e il 2099 e il mese tra 01 e 12. Poi in questo caso, già che c'ero, ho messo le condizioni anche per il giorno quindi in teoria non converte la data se trova valori superiori a 31.
    Sarebbe cmq da testare.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

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.