Foros del Web » Programando para Internet » PHP »

Cuadro de texto para ingreso de fecha

Estas en el tema de Cuadro de texto para ingreso de fecha en el foro de PHP en Foros del Web. Hola amigos Disculpen mi ignorancia, es posible un cuadro de texto dejarlo con un formato fecha al ingresar, como por ejemplo algo asi. si ingreso ...
  #1 (permalink)  
Antiguo 04/06/2014, 06:18
 
Fecha de Ingreso: enero-2013
Ubicación: Puerto Montt
Mensajes: 13
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta Cuadro de texto para ingreso de fecha

Hola amigos

Disculpen mi ignorancia, es posible un cuadro de texto dejarlo con un formato fecha al ingresar, como por ejemplo algo asi.

si ingreso

04062014

lo deje asi

2014/06/04


Saben si se puede....

Saludos
  #2 (permalink)  
Antiguo 04/06/2014, 06:25
Avatar de 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

Etiquetas: cuadro, fecha, ingreso
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:59.