Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/06/2014, 06:25
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Cuadro de texto para ingreso de fecha

El "cuadro de texto" es elemento HTML : TEXTAREA o INPUT type="text" ... y ...si se puede, y con Javascript seria lo mas adecuado ya que es visualizacion lo que pides.

Seria algo asi

Código Javascript:
Ver original
  1. <form action="procesar.php" method="GET">
  2.         Fecha ?<br/>
  3.     <input type="text" id="fecha" onchange="formateador(this);"/>
  4.     </form>
  5.    
  6.     <script language="JavaScript">
  7.    
  8.         function valida_date(f)
  9.         {
  10.             var matches = /^(\d{2})[-\/]?(\d{2})[-\/]?(\d{4})$/.exec(f);
  11.             if (matches == null) return false;
  12.             var d = matches[2];
  13.             var m = matches[1] - 1;
  14.             var y = matches[3];
  15.             var composedDate = new Date(y, m, d);
  16.            
  17.             return composedDate.getDate() == d &&
  18.             composedDate.getMonth() == m &&
  19.             composedDate.getFullYear() == y;
  20.         }
  21.    
  22.         /*
  23.             @param: fecha en formato 'dmY', ej: 04062014
  24.             @return: fecha en formato 'Y/m/d'
  25.         */
  26.         function formateador(elem)
  27.         {  
  28.             f = elem.value;
  29.            
  30.             console.log(valida_date(f));
  31.            
  32.             if (!valida_date(f))
  33.                 return false;              
  34.            
  35.             dia = f.slice(0,2);
  36.             mes = f.slice(2,4);
  37.             ano = f.slice(4,8);
  38.        
  39.             f = ano+'/'+mes+'/'+dia;
  40.             elem.value = f;        
  41.         }      
  42.        
  43.     </script>

Y DESDE PHP... te toca lo mismo ya que no puedes confiar en que JS este habilitado, asi que lo que necesitas en funciones:

Código PHP:
Ver original
  1. <?php
  2.         function valida_date($date,$format='dmY')
  3.         {
  4.             $f = DateTime::createFromFormat('dmY', $date);
  5.             $valid = DateTime::getLastErrors();        
  6.             return ($valid['warning_count']==0 and $valid['error_count']==0);
  7.         }
  8.  
  9.         /*
  10.             @param: fecha en formato 'dmY'
  11.             @return: fecha en formato 'Y/m/d'
  12.         */
  13.         function format_converter($f)
  14.         {          
  15.             if (!valida_date($f))
  16.                 return false; // o lanzo excepcion
  17.        
  18.             $dia = substr($f,0,2);
  19.             $mes = substr($f,2,2);
  20.             $ano = substr($f,4,4);
  21.        
  22.             return $ano.'/'.$mes.'/'.$dia;              
  23.         }      
  24.            
  25.         echo format_converter('04062014'); // 2014/06/04
  26.         echo format_converter('85062014'); // (false)

Las funciones se pueden compactar.....es ver la idea
__________________
Salu2!

Última edición por Italico76; 04/06/2014 a las 08:27