2010-12-23 12 views
5

¿Hay alguna clase predefinida en Java de manera que, si la paso una fecha, debería devolverse si es una fecha válida o no? Por ejemplo, si lo paso el 31 de febrero de algún año, entonces debería devolverlo como falso, y si la fecha existe, entonces debería devolverme la verdad, para cualquier fecha de cualquier año.Comprobando si existe una fecha o no en Java

Y también quiero un método que me diga qué día de la semana es esta fecha en particular. Pasé por la clase de calendario, pero no entendí cómo hacer esto.

+0

Si intenta crear un objeto de fecha que no existe probablemente será una excepción. No estoy seguro, nunca usé las fechas en Java. – Falmarri

+0

lo que él (Falmarri) dijo ... – st0le

+0

@ st0le - ¿qué? ¿No estás seguro también? :-) –

Respuesta

14

How to Validate a Date in Java

private static boolean isValidDate(String input) { 
     String formatString = "MM/dd/yyyy"; 

     try { 
      SimpleDateFormat format = new SimpleDateFormat(formatString); 
      format.setLenient(false); 
      format.parse(input); 
     } catch (ParseException e) { 
      return false; 
     } catch (IllegalArgumentException e) { 
      return false; 
     } 

     return true; 
    } 

public static void main(String[] args){ 
     System.out.println(isValidDate("45/23/234")); // false 
     System.out.println(isValidDate("12/12/2111")); // true 
    } 
+0

de nada. Eche un vistazo a SimpleDateFormat http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html. usted puede modificar formatString según sus necesidades durante un día de la semana, durante una hora, incluso por un minuto :) –

+0

@sasidhar Realmente recomiendo que eche un vistazo a la hora de joda. Será la API de fecha estándar a partir de JDK7, pero puede usarla ahora. Tiene todo tipo de buenos métodos, uno de ellos es getDatOfWeek. –

+0

Su regreso el 31 de febrero existe ............ simplemente está comprobando si la fecha es inferior a 31 y el mes es inferior a 12 y el año es válido ... eso es todo ... .pero esa no es la funcionalidad que quiero .... :(ayuda por favor ... – sasidhar

-1

Puede utilizar esto para conseguir día de la semana a partir de la fecha

Calendar currentDate = Calendar.getInstance(); //or your specified date. 
    int weekDay = currentDate.get(Calendar.DAY_OF_WEEK); 
4

La clave es llamar DateFormat#isLenient(false) por lo que no ruede valores que están fuera de rango durante el análisis:

DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
format.parse("2010-02-31"); //=> Ok, rolls to "Wed Mar 03 00:00:00 PST 2010". 
format.setLenient(false); 
format.parse("2010-02-31"); //=> Throws ParseException "Unparseable date". 

Por supuesto, puede usar cualquier formato de fecha real que necesite.

Cuestiones relacionadas