Introducir fecha y poder meter año con 2 caracteres

  • Autor Autor adonet
  • Fecha de inicio Fecha de inicio
adonet

adonet

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Tengo un pequeño problema, en un formulario tengo un campo tipo date, la cosa es que al introducir el año debo escribir 2017 y aveces algún usuario se cuela y en vez de escribir 2017, sólo escribe 17 y el año que se captura es 0017

¿Se os ocurre alguna manera de que se pueda escribir 17 y automáticamente lo entienda como 2017 ?
 
Pon el ejemplo de tu código así es más fácil ayudarte...
 
Verifica que sea una fecha válida, si no arroja error.

O detecta si son 2 caracteres entonces le agregas el "20".

Yo me iría por la primera opción.
 
PHP:
$fecha=98;  //ejemplo de 1998
if ($fecha <= 40 ){
$fecha="20".$fecha;
}
if ($fecha > 40 && $fecha <= 99 ){
$fecha="19".$fecha;
}

echo $fecha;
 
Una funcion en JS que cheque la el ano y que lo cambie cuando detecte que no es el esperado.
 
Una funcion en JS que cheque la el ano y que lo cambie cuando detecte que no es el esperado.

Tienes razón, pero como he visto que esta en el foro php, se lo he puesto en php.
De todas formas el código que eh puesto es prácticamente el mismo php que javascript
 
Yo creo que si quiere por ejemplo evitar que llegue al servidor ya con un error lo mejor es manejarlo a nivel de javascript con un codigo o anadiendo una libreria que lo valide y que le deje al usuario el mesaje de que su fecha es no valida. Asi se evita el codigo en fechas del lado del servidor.
 
Solucionado con javascript!
llamo a esta función desde un onblur o onchange del input type="date"

<script type="text/javascript">
// por si en vez de meter 2016 meten 16 y yo lo sustituyo por 2016
function revisar_fecha(campo){
fecha_introducida = campo.value;
//devuelve la fecha en ingles 0016-01-01
ano_introducido = fecha_introducida.substring(0,2);
if (ano_introducido == "00")
{
fecha_a_devolver = "20"+fecha_introducida.substring(2);
campo.value = fecha_a_devolver;
}

}

</script>

y luego lo compruebo desde php

- - - Actualizado - - -

La mejoro:

<script type="text/javascript">
// por si en vez de meter 2016 meten 16 y yo lo sustituyo por 2016
function revisar_fecha(campo){
fecha_introducida = campo.value;
//devuelve la fecha en ingles 0016-01-01
ano_introducido = fecha_introducida.substring(0,2);
var segunda_parte_del_ano = parseInt(fecha_introducida.substring(2,4));

if (ano_introducido == "00") // si sólo ha metido 16 o 98 // 2016 o 1998
{
if (segunda_parte_del_ano < 40) // eso es que es del año 2000, hasta el 2040
{
campo.value = "20"+fecha_introducida.substring(2);
}else{
campo.value = "19"+fecha_introducida.substring(2);
}
}

}

</script>
 
Atrás
Arriba