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

    Inserire delle date che sono precedenti al 1970 ?

    E' possibile inserire delle date che sono precedenti al 1970 ?

    So che potrei usare il campo varchar ma poi i dati non sono in ordine di data, semmai sono in ordine alfabetico.

    Siccome dovrei inserire le date di nascita di alcune persone anziane che sono nate prima del 1970, c'è il problema.

    Devo forse usare timestamp ?

    Se si...
    Che formato deve essere timestamp ?
    e come impostare il formato ?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    se parliamo di MySQL, il tipo datetime supporta il range di anni 1000-9999: può andar bene? fai sapere...

  3. #3
    Riconosco che NON mi sono spiegato bene

    è la funzione strtotime che è limitata al 1970.

    D'altronde io devo leggere una data dal database mysql e metterla in 3 tendine, le quali raprresentano giorno, mese, anno

    E' vero che mysql funziona alla grande e praticamente senza limitazioni, ma la limitazione è nella funzione php strtotime.

    Al posto di usare strtotime, dovrei usare un qualcosa di sostitutivo che mi faccia ottenere 3 numeri di tipo integer, rispettivamente giorno mese anno; partendo da una stringa che rappresenta una data in formato yyyy-mm-dd (letta dal database).

    -------------------------

    Se tale funzione che io cerco, NON esiste, dovrò lavorare pesante per crearla io.

    Tale funzione dovrà splittare i separatori data (che di solito sono i segni meno) per ricavare una matrice di 3 elementi che appunto rappresentano il giorno il mese e l'anno.

    Ma vorrei evitare di fare questo lavoraccio.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Re: Inserire delle date che sono precedenti al 1970 ?

    Originariamente inviato da gaetano123
    E' possibile inserire delle date che sono precedenti al 1970 ?

    So che potrei usare il campo varchar ma poi i dati non sono in ordine di data, semmai sono in ordine alfabetico.
    ...
    Il tuo problema è solo quello dell'ordinamento?
    Il formato aaaa-mm-gg
    va in ordine benissimo anche se gestito come stringa.

  5. #5

    Re: Re: Inserire delle date che sono precedenti al 1970 ?

    Originariamente inviato da Alhazred
    Il tuo problema è solo quello dell'ordinamento?
    Il formato aaaa-mm-gg
    va in ordine benissimo anche se gestito come stringa.
    Interessante !
    Questo non lo sapevo quindi prendo nota.

    Comunque ho risolto il problema facendo la mia funziona strtodate visto che quella ufficiale strtotime è deludente.
    codice:
    function mystrtodate($kk1, $separatore){
    	$swErr=false;
    	
    	//--- inizio mettere il default ---
    	$matricelocale = explode("-", "1-1-1");
    	$n3=count($matricelocale);
    	for($bb = 0; $bb < $n3; $bb++) {
    		$matricelocale[$bb]="-".$matricelocale[$bb];
    	}
    	//--- fine mettere il default ---
    	
    	$UnaData=trim($kk1);
    	$n1=strlen($UnaData);
    	
    	if ($n1 < 1) {
    		$swErr=true;
    		$matricelocale = explode("-", "1-1-1");
    		$n3=count($matricelocale);
    		for($bb = 0; $bb < $n3; $bb++) {
    			$matricelocale[$bb]="-".$matricelocale[$bb];
    		}
    	} //swErr = false
    	
    	if (strlen($separatore) < 1) {
    		$separatore="-";
    	}
    	
    	if ($swErr == false) {
    		$matricelocale = explode($separatore, $UnaData);
    		$n3=count($matricelocale);
    		if ($n3 !== 3) {
    			$swErr=true;
    			$matricelocale = explode("-", "1-1-1");
    			$n3=count($matricelocale); // n3=3
    			for($bb = 0; $bb < $n3; $bb++) {
    				$matricelocale[$bb]="-".$matricelocale[$bb];
    			}
    		} // n3 diverso da 3
    	} //swErr = false
    		
    	if ($swErr == false) {
    		$kk2=$matricelocale[0];
    		$n2=strlen($kk2);
    		if ($n2 !== 4) {
    			$swErr=true;
    			$matricelocale[0]="-1";
    			$matricelocale[1]="-1";
    			$matricelocale[2]="-1";
    		} // n2 diverso da 4
    	} // swErr = false
    	
    	
    	if ($swErr == false) {
    		//--- inizio mese ---
    		$AlfaMese=$matricelocale[1]; // mese
    		$n2=strlen($AlfaMese);
    		if ($n2 == 0) {
    			$swErr=true;
    			$matricelocale[0]="-1";
    			$matricelocale[1]="-1";
    			$matricelocale[2]="-1";
    		}else{
    			if ($n2 == 1) {
    				//va bene
    			}else{
    				if ($n2 == 2) {
    					$primo_car=substr($AlfaMese, 0, 1);
    					//echo "primo carattere a sinistra del mese = ", $primo_car, "
    ";
    					if ($primo_car == "0") {
    						$matricelocale[1]=substr($AlfaMese, 1, 1); // rimuove lo zero
    					}
    				}else{
    					$swErr=true;
    					$matricelocale[0]="-1";
    					$matricelocale[1]="-1";
    					$matricelocale[2]="-1";
    				}
    			}
    		}
    		//--- fine mese ---
    	} // swErr = false
    	
    
    	if ($swErr == false) {
    		//--- inizio giorno ---
    		$AlfaGiorno=$matricelocale[2]; // giorno
    		$n2=strlen($AlfaGiorno);
    		if ($n2 == 0) {
    			$swErr=true;
    			$matricelocale[0]="-1";
    			$matricelocale[1]="-1";
    			$matricelocale[2]="-1";
    		}else{
    			if ($n2 == 1) {
    				//va bene
    			}else{
    				if ($n2 == 2) {
    					$primo_car=substr($AlfaGiorno, 0, 1);
    					//echo "primo carattere a sinistra del giorno = ", $primo_car, "
    ";
    					if ($primo_car == "0") {
    						$matricelocale[2]=substr($AlfaGiorno, 1, 1); // rimuove lo zero
    					}
    				}else{
    					$swErr=true;
    					$matricelocale[0]="-1";
    					$matricelocale[1]="-1";
    					$matricelocale[2]="-1";
    				}
    			}
    		}
    		//--- fine giorno ---
    	} // swErr = false
    	
        return $matricelocale;
    } //end function
    
    
    
    
    
    
    $MiaDataDiNascita="1991-08-22";
    $matrice=mystrtodate($MiaDataDiNascita, "-");

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.