Dadas dos fechas start_date y end_date con tiempo en forma de strings, la tarea es encontrar la diferencia entre dos fechas en Java .
Ejemplos:
Entrada: start_date = «10-01-2018 01:10:20», end_date = «10-06-2020 06:30:50»
Salida: 2 años, 152 días, 5 horas, 20 minutos, 30 segundosEntrada: start_date = «10-01-2019 01:00:00», end_date = «10-06-2020 06:00:00»
Salida: 1 año, 152 días, 5 horas, 0 minutos, 0 segundos
Método 1: use la clase SimpleDateFormat y Date para encontrar la diferencia entre dos fechas. A continuación se muestran los pasos:
- Cree un objeto de la clase SimpleDateFormat y convierta el formato de string en un objeto de fecha.
- Analice start_date y end_date de una string para producir la fecha, esto se puede hacer usando el método parse() de la clase simpleDateFormat.
- Encuentre la diferencia de tiempo entre dos fechas en milisegundos usando el método getTime() en Java como d2.getTime() – d1.getTime() .
- Use la fórmula matemática de fecha y hora para encontrar la diferencia entre dos fechas. Devuelve los años, días, horas, minutos y segundos entre las dos fechas especificadas.
- Imprime el resultado final.
A continuación se muestra la implementación del enfoque anterior:
Java
// Java program for the above approach import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; class GFG { // Function to print difference in // time start_date and end_date static void findDifference(String start_date, String end_date) { // SimpleDateFormat converts the // string format to date object SimpleDateFormat sdf = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss"); // Try Block try { // parse method is used to parse // the text from a string to // produce the date Date d1 = sdf.parse(start_date); Date d2 = sdf.parse(end_date); // Calucalte time difference // in milliseconds long difference_In_Time = d2.getTime() - d1.getTime(); // Calucalte time difference in // seconds, minutes, hours, years, // and days long difference_In_Seconds = (difference_In_Time / 1000) % 60; long difference_In_Minutes = (difference_In_Time / (1000 * 60)) % 60; long difference_In_Hours = (difference_In_Time / (1000 * 60 * 60)) % 24; long difference_In_Years = (difference_In_Time / (1000l * 60 * 60 * 24 * 365)); long difference_In_Days = (difference_In_Time / (1000 * 60 * 60 * 24)) % 365; // Print the date difference in // years, in days, in hours, in // minutes, and in seconds System.out.print( "Difference " + "between two dates is: "); System.out.println( difference_In_Years + " years, " + difference_In_Days + " days, " + difference_In_Hours + " hours, " + difference_In_Minutes + " minutes, " + difference_In_Seconds + " seconds"); } // Catch the Exception catch (ParseException e) { e.printStackTrace(); } } // Driver Code public static void main(String[] args) { // Given start Date String start_date = "10-01-2018 01:10:20"; // Given end Date String end_date = "10-06-2020 06:30:50"; // Function Call findDifference(start_date, end_date); } }
La diferencia entre dos fechas es: 2 años, 152 días, 5 horas, 20 minutos, 30 segundos
Método 2: Podemos encontrar la diferencia entre dos fechas de una mejor manera usando la clase integrada de Java TimeUnit .
A continuación se muestra la implementación del enfoque anterior:
Java
// Java program to find the // difference between two dates import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.concurrent.TimeUnit; import java.util.Date; class GFG { // Function to print difference in // time start_date and end_date static void findDifference(String start_date, String end_date) { // SimpleDateFormat converts the // string format to date object SimpleDateFormat sdf = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss"); // Try Class try { // parse method is used to parse // the text from a string to // produce the date Date d1 = sdf.parse(start_date); Date d2 = sdf.parse(end_date); // Calucalte time difference // in milliseconds long difference_In_Time = d2.getTime() - d1.getTime(); // Calucalte time difference in seconds, // minutes, hours, years, and days long difference_In_Seconds = TimeUnit.MILLISECONDS .toSeconds(difference_In_Time) % 60; long difference_In_Minutes = TimeUnit .MILLISECONDS .toMinutes(difference_In_Time) % 60; long difference_In_Hours = TimeUnit .MILLISECONDS .toHours(difference_In_Time) % 24; long difference_In_Days = TimeUnit .MILLISECONDS .toDays(difference_In_Time) % 365; long difference_In_Years = TimeUnit .MILLISECONDS .toDays(difference_In_Time) / 365l; // Print the date difference in // years, in days, in hours, in // minutes, and in seconds System.out.print( "Difference" + " between two dates is: "); // Print result System.out.println( difference_In_Years + " years, " + difference_In_Days + " days, " + difference_In_Hours + " hours, " + difference_In_Minutes + " minutes, " + difference_In_Seconds + " seconds"); } catch (ParseException e) { e.printStackTrace(); } } // Driver Code public static void main(String[] args) { // Given start_date String start_date = "10-01-2018 01:10:20"; // Given end_date String end_date = "10-06-2020 06:30:50"; // Function Call findDifference(start_date, end_date); } }
La diferencia entre dos fechas es: 2 años, 152 días, 5 horas, 20 minutos, 30 segundos
Método 3: use la clase Período en Java para encontrar la diferencia entre dos días. El método Period. between() se usa para calcular la diferencia entre dos fechas en años, meses y días.
A continuación se muestra la implementación del enfoque anterior:
Java
// Java program for the above approach import java.time.*; import java.util.*; class GFG { // Function to print difference in // time start_date and end_date static void findDifference(LocalDate start_date, LocalDate end_date) { // find the period between // the start and end date Period diff = Period .between(start_date, end_date); // Print the date difference // in years, months, and days System.out.print( "Difference " + "between two dates is: "); // Print the result System.out.printf( "%d years, %d months" + " and %d days ", diff.getYears(), diff.getMonths(), diff.getDays()); } // Driver Code public static void main(String[] args) { // Start date LocalDate start_date = LocalDate.of(2018, 01, 10); // End date LocalDate end_date = LocalDate.of(2020, 06, 10); // Function Call findDifference(start_date, end_date); } }
La diferencia entre dos fechas es: 2 años, 5 meses y 0 días
Publicación traducida automáticamente
Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA