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

    Validare e formattare date anteriori al 1970

    Ciao a tutti,
    vorrei realizzare una funzione che mi permetta di validare una data e successivamente di formattarla secondo le mie esigenze.

    Sono riuscito a scrivere una funzione che compie egregiamente il suo lavoro per date successive al 1970.. ma non saprei come procedere per tutte le altre:

    Codice PHP:
    function formatData($giorno,$mese,$anno){
            
    $data = @mktime(0,0,0,$mese,$giorno,$anno);
            if ( (
    $data == false) || ($data == -1) )
                return 
    false;
            return @
    date('Ymd',$data);
        } 
    Questa funzione fa due cose semplicissime:
    1) prende in input giorno, mese e anno e controlla che siano validi (non accetta date inesistenti);
    2) formatta la data e la ritorna.

    Qualche idea?

    Ciao e grazie!

  2. #2

  3. #3
    Perfetto, grazie!

    Allora la funzione diventa:
    Codice PHP:
    function formatData($giorno,$mese,$anno){ 
            if ( !
    checkdate((int)$mese, (int)$giorno, (int)$anno ) ) 
                return 
    false
            return @
    date('Ymd',$data); //Questo non va
        

    Però rimane ancora un problema.. come faccio a formattarla senza usare date() [dato che usa un timestamp come argomento]?

    Devo per forza mettermi a fare controlli del tipo:
    if ( lenght($giorno) == 1 )
    $giorno = '0'.$giorno;
    if ( lenght($giorno) == 1 )

    E via dicendo.. oppure esiste uno strumento flessibile come date() che semplicemente modificando la stringa di formattazione mi permette di avere al volo la stringa che mi serve?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    i metodi sono i due da te proposti, sinceramente non ho mai fatto dei test per vedere se esistono delle grosse differenze tra un metodo e l'altro.

    Per quanto riguarda i numeri minori di 10 puoi scriverti una funzioncina:

    codice:
    function formatNumber($number) {
    
      if($number < 10) {
    
         return "0".$number;
    
      } else {
    
         return $number;
    
      } 
    
    }
    e poi la usi cosi:

    codice:
    function formatData($giorno,$mese,$anno){
            if ( !checkdate((int)$mese, (int)$giorno, (int)$anno ) )
                return false;
            return $anno.formatnumber($mese).$formatnumber($giorno);
        }

  5. #5

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.