Inserir data e poder colocar ano com 2 caracteres

  • Autor Autor adonet
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
adonet

adonet

Beta
Usuário com poucas negociações! Use sempre o saldo do 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 ?
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
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>
 
Voltar
Topo