Tengo un objeto de fecha en Java almacenado como tipo de fecha de Java.
También tengo una fecha de creación del calendario gregoriano. La fecha del calendario gregoriano no tiene parámetros y, por lo tanto, es una instancia de la fecha (¿y la hora?) de hoy.
Con la fecha de Java, quiero poder obtener el año, el mes, el día, la hora, los minutos y los segundos del tipo de fecha de Java y comparar la fecha del calendario gregoriano.
Vi que en este momento la fecha de Java se almacena como larga y los únicos métodos disponibles parecen escribir la larga como una cadena de fecha formateada. ¿Hay alguna forma de acceder al año, mes, día, etc.?
Vi que los métodos getYear() , getMonth() , etc. para la clase Date han quedado obsoletos. Me preguntaba cuál es la mejor práctica para usar la instancia de Java Date que tengo con la fecha de GregorianCalendar .
Mi objetivo final es hacer un cálculo de fecha para poder verificar que la fecha de Java esté dentro de tantas horas, minutos, etc. de la fecha y hora de hoy.
Todavía soy un novato en Java y estoy un poco desconcertado por esto.
Usa algo como:
Date date; // your date // Choose time zone in which you want to interpret your Date Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Europe/Paris")); cal.setTime(date); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH); int day = cal.get(Calendar.DAY_OF_MONTH); // etc.Cuidado, los meses comienzan en 0, no en 1.
Editar : desde Java 8, es mejor usar java.time.LocalDate en lugar de java.util.Calendar . Vea esta respuesta para saber cómo hacerlo.
Con Java 8 y versiones posteriores, puede convertir el objeto Date en un objeto LocalDate y luego obtener fácilmente el año, el mes y el día.
Date date = new Date(); LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); int year = localDate.getYear(); int month = localDate.getMonthValue(); int day = localDate.getDayOfMonth(); Tenga en cuenta que getMonthValue() devuelve un valor int de 1 a 12.
Podría hacer algo como esto, explicará cómo funciona la clase Date .
String currentDateString = "02/27/2012 17:00:00"; SimpleDateFormat sd = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date currentDate = sd.parse(currentDateString); String yourDateString = "02/28/2012 15:00:00"; SimpleDateFormat yourDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); Date yourDate = yourDateFormat.parse(yourDateString); if (yourDate.after(currentDate)) { System.out.println("After"); } else if(yourDate.equals(currentDate)) { System.out.println("Same"); } else { System.out.println("Before"); }