Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 16/02/13, 22:47:59
Avatar de carrobe1390
carrobe1390 carrobe1390 no está en línea
Miembro del foro
Mensajes: 47
 
Fecha de registro: feb 2013
Localización: Guayaquil
Mensajes: 47
Modelo de smartphone: Samsung Galaxy S3
Versión de ROM: 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
Validar que la fecha sea valida

public boolean validarFecha(String fecha) throws java.text.ParseException {

if (fecha == null)
return false;
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault());
if (fecha.trim().length() != dateFormat.toPattern().length())

return false;
txt2.requestFocus();
dateFormat.setLenient(false);

try {
dateFormat.parse(fecha.trim());

}
catch (ParseException pe) {
return false;
}
return true;
}

tengo el siguiente metodo que me valida el formato de la fecha.. mas no valida el año... ejemplo ingresa 12/12/2033 y pasa como podria corregir el error y que me valide que no pase del año en curso osea del 2013... gracias y espero me ayuden..
Responder Con Cita


  #2  
Viejo 16/02/13, 22:55:40
Avatar de set92
set92 set92 no está en línea
Miembro del foro
Mensajes: 468
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Pues nunca he intentado hacer nada de esto pero si tienes la fecha en un String del tipo DD/MM/YYYY tienes 2 formas que se me ocurran ahora, una seria dividir entre 1000 creo que es y entonces cojerias los 4 ultimos digitos pero tendrias el problema de que si el usuario mete 13 como año entonces esto no serviria por lo cual tienes la otra posibilidad que seria hacer un substring del String desde la / + 1, porque si no le pones el +1 te cojeria la /.

Y cuando ya tienes ese numero en una variable, casi igual mejor que sea una variable numerica pues miras si es mayor al año actual y si lo es le asignas el año actual, asi cualquier año que quiera poner te dara igual porque estaras poniendo tu el año maximo.

Solo le veo un problema a esto y es que si le pones tu que sustituya la variable por 2013 deberias estar cambiando el programa cada año y si alguien no lo actualiza le dejaria de servir, osea lo mejor sera buscar un metodo que te permite recojer el año del sistema.
Responder Con Cita
  #3  
Viejo 16/02/13, 23:00:14
Avatar de carrobe1390
carrobe1390 carrobe1390 no está en línea
Miembro del foro
Mensajes: 47
 
Fecha de registro: feb 2013
Localización: Guayaquil
Mensajes: 47
Modelo de smartphone: Samsung Galaxy S3
Versión de ROM: 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
I por si acaso no tienes ese metodo?
Responder Con Cita
  #4  
Viejo 16/02/13, 23:01:52
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
if (fecha.split("/")[2]==String.valueOf(Calendar.getInstance().get(Calend ar.YEAR))
//EL AÑO ES EL ACTUAL
Responder Con Cita
  #5  
Viejo 16/02/13, 23:23:55
Avatar de carrobe1390
carrobe1390 carrobe1390 no está en línea
Miembro del foro
Mensajes: 47
 
Fecha de registro: feb 2013
Localización: Guayaquil
Mensajes: 47
Modelo de smartphone: Samsung Galaxy S3
Versión de ROM: 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
if (fecha.split("/")[2]==String.valueOf(Calendar.getInstance().get(Calend ar.YEAR))
//EL AÑO ES EL ACTUAL
y en que parte del codigo iria?
Responder Con Cita
  #6  
Viejo 17/02/13, 00:13:02
Avatar de carrobe1390
carrobe1390 carrobe1390 no está en línea
Miembro del foro
Mensajes: 47
 
Fecha de registro: feb 2013
Localización: Guayaquil
Mensajes: 47
Modelo de smartphone: Samsung Galaxy S3
Versión de ROM: 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
relalize el sgte metodo
public boolean validarano(String fecha)
{
if (fecha.split("/")[0]==String.valueOf(Calendar.getInstance().get(Calend ar.DAY_OF_MONTH)))
{txt2.requestFocus();}
if (fecha.split("/")[1]==String.valueOf(Calendar.getInstance().get(Calend ar.MONTH)))
{txt2.requestFocus();}
if (fecha.split("/")[2]==String.valueOf(Calendar.getInstance().get(Calend ar.YEAR)))
{txt2.requestFocus();}
return true;

}

y en el boton de guardar puse la sgte validacion

if(validarano(texto2.getText().toString))
{
Toast toast2 = Toast.makeText(getApplicationContext(),"Ingrese el Año Correcto", Toast.LENGTH_LONG);
//toast1.setGravity(gravity, xOffset, yOffset)
toast2.setGravity(Gravity.CENTER | Gravity.BOTTOM ,0,0);
toast2.show();
txt2.requestFocus();
}
pero me sigue votando la fecha incorrecta aunque sea la del dia de hoy que estoy aciendo mal?
Responder Con Cita
  #7  
Viejo 17/02/13, 01:45:33
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Si siempre devuelves True obviamente siempre se va a ejecutar el contenido del if en guardar.
Responder Con Cita
  #8  
Viejo 17/02/13, 02:05:26
Avatar de carrobe1390
carrobe1390 carrobe1390 no está en línea
Miembro del foro
Mensajes: 47
 
Fecha de registro: feb 2013
Localización: Guayaquil
Mensajes: 47
Modelo de smartphone: Samsung Galaxy S3
Versión de ROM: 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Si siempre devuelves True obviamente siempre se va a ejecutar el contenido del if en guardar.
cambie el valor de true por false i con la misma sentencia pero no me corrige el año...? en que estoi fallandO
Responder Con Cita
  #9  
Viejo 17/02/13, 07:22:02
Avatar de set92
set92 set92 no está en línea
Miembro del foro
Mensajes: 468
 
Fecha de registro: jun 2012
Mensajes: 468
Modelo de smartphone: samsung
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Pero el problema es que si solo devuelves true siempre te entrara en el metodo y te saldra diciendo que es true, y lo mismo si cambias el valor por false, debes tener 2 caminos y 2 salidas, es decir por ejemplo tenerlo asi y el return false ponerlo dentro de los IF, y asi si entra en uno de los IF devuelve false y no hace los siguientes IF ni devuelve true.

Aunque fijandome en tu codigo tienes que poner el return True dentro de los IF, y un return false donde tienes ahora el return true, asi intentara entrar en los IF y si entra en alguno devolvera true y mostrara el mensaje de error, y si no llega a entrar en ningun IF entonces habra sido porque esta todo bien y llegara al return false; por lo que continuara la app y guardara, aun asi el Toast solo menciona el año, osea solo necesitarias devolver true en el caso de que el año este mal.
Responder Con Cita
  #10  
Viejo 17/02/13, 15:43:26
Avatar de carrobe1390
carrobe1390 carrobe1390 no está en línea
Miembro del foro
Mensajes: 47
 
Fecha de registro: feb 2013
Localización: Guayaquil
Mensajes: 47
Modelo de smartphone: Samsung Galaxy S3
Versión de ROM: 4.1.2
Tu operador: Claro
Mencionado: 0 comentarios
Tagged: 0 hilos
Re: Validar que la fecha sea valida

puedes ayudme con el codigo???
Responder Con Cita
  #11  
Viejo 17/02/13, 16:01:52
Avatar de ysuran
ysuran ysuran no está en línea
Miembro del foro
Mensajes: 174
Compra y venta: (2)
 
Fecha de registro: mar 2009
Localización: Valencia
Mensajes: 174
Modelo de smartphone: Pixel 7 Pro
Tu operador: O2
Mencionado: 0 comentarios
Tagged: 0 hilos
Re: Validar que la fecha sea valida

Cita:
Originalmente Escrito por carrobe1390 Ver Mensaje
relalize el sgte metodo
public boolean validarano(String fecha)
{
if (fecha.split("/")[0]==String.valueOf(Calendar.getInstance().get(Calend ar.DAY_OF_MONTH)))
{txt2.requestFocus();}
if (fecha.split("/")[1]==String.valueOf(Calendar.getInstance().get(Calend ar.MONTH)))
{txt2.requestFocus();}
if (fecha.split("/")[2]==String.valueOf(Calendar.getInstance().get(Calend ar.YEAR)))
{txt2.requestFocus();}
return true;

}

y en el boton de guardar puse la sgte validacion

if(validarano(texto2.getText().toString))
{
Toast toast2 = Toast.makeText(getApplicationContext(),"Ingrese el Año Correcto", Toast.LENGTH_LONG);
//toast1.setGravity(gravity, xOffset, yOffset)
toast2.setGravity(Gravity.CENTER | Gravity.BOTTOM ,0,0);
toast2.show();
txt2.requestFocus();
}
pero me sigue votando la fecha incorrecta aunque sea la del dia de hoy que estoy aciendo mal?
un consejo, no compares Strings usando ==. Comparalos usando el fecha.split("/")[0].equals( String.valueOf(Calendar.getInstance().get(Calendar .DAY_OF_MONTH))).

Otra opción sería esta:

String [] splitFecha = fecha.split("/") ;
Integer.parseInt(splitFecha[0]) == Calendar.getInstance().get(Calendar.DAY_OF_MONTH);

Última edición por ysuran Día 17/02/13 a las 16:07:53
Responder Con Cita
  #12  
Viejo 17/02/13, 16:04:54
Avatar de ysuran
ysuran ysuran no está en línea
Miembro del foro
Mensajes: 174
Compra y venta: (2)
 
Fecha de registro: mar 2009
Localización: Valencia
Mensajes: 174
Modelo de smartphone: Pixel 7 Pro
Tu operador: O2
Mencionado: 0 comentarios
Tagged: 0 hilos
Re: Validar que la fecha sea valida

Por cierto, si la fecha tiene formato dd/mm/yyyy, podrías crear un obheto del tipo date pasandole la fecha al constructor y luego se comparan con mayor facilidad
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 19:23:00 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007