Comment calculer la différence de temps en Java?

Je veux soustraire deux périodes, à savoir 16:00:00 de 19:00:00. Y a-t-il une fonction Java pour cela? Les résultats peuvent être en millisecondes, secondes ou minutes.

Ssortingng time1 = "16:00:00"; Ssortingng time2 = "19:00:00"; SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); Date date1 = format.parse(time1); Date date2 = format.parse(time2); long difference = date2.getTime() - date1.getTime(); 

La différence est en millisecondes.

J’ai modifié le post de sfaizs .

Java 8 dispose d’une solution plus propre – Instantanée et Durée

Exemple:

 import java.time.Duration; import java.time.Instant; ... Instant start = Instant.now(); //your code Instant end = Instant.now(); Duration timeElapsed = Duration.between(start, end); System.out.println("Time taken: "+ timeElapsed.toMillis() +" milliseconds"); 

POUR obtenir de belles différences de timing, alors

 // d1, d2 are dates long diff = d2.getTime() - d1.getTime(); long diffSeconds = diff / 1000 % 60; long diffMinutes = diff / (60 * 1000) % 60; long diffHours = diff / (60 * 60 * 1000) % 24; long diffDays = diff / (24 * 60 * 60 * 1000); System.out.print(diffDays + " days, "); System.out.print(diffHours + " hours, "); System.out.print(diffMinutes + " minutes, "); System.out.print(diffSeconds + " seconds."); 

Java 8

 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime dateTime1= LocalDateTime.parse("2014-11-25 19:00:00", formatter); LocalDateTime dateTime2= LocalDateTime.parse("2014-11-25 16:00:00", formatter); long diffInMilli = java.time.Duration.between(dateTime1, dateTime2).toMillis(); long diffInSeconds = java.time.Duration.between(dateTime1, dateTime2).getSeconds(); long diffInMinutes = java.time.Duration.between(dateTime1, dateTime2).toMinutes(); 

Tout comme toute autre langue; convertissez vos périodes de temps en un horodatage unix (c.-à-d. les secondes depuis l’époque d’Unix), puis soustrayez simplement. Ensuite, les secondes résultantes doivent être utilisées comme un nouveau timestamp Unix et être lues au format de votre choix.

Ah, donnez à l’affiche ci-dessus (genesiss) le crédit qui lui revient, le code est toujours à scope de main;) Cependant, vous avez maintenant une explication 🙂

 import java.util.Date; ... Date d1 = new Date(); ... ... Date d2 = new Date(); System.out.println(d2.getTime()-d1.getTime()); //gives the time difference in milliseconds. System.out.println((d2.getTime()-d1.getTime())/1000); //gives the time difference in seconds. 

et, pour montrer dans un format plus agréable, vous pouvez utiliser:

  DecimalFormat myDecimalFormatter = new DecimalFormat("###,###.###"); System.out.println(myDecimalFormatter.format(((double)d2.getTime()-d1.getTime())/1000)); 

La manière douloureuse est de convertir en millis et de faire la soustraction, puis de revenir aux secondes désirées. Le meilleur moyen est d’utiliser JodaTime .

Option alternative si le temps de différents jours est pris, par exemple: 22h00 et 01h55.

 public static long getDiffTime(Date date1, Date date2){ if (date2.getTime() - date1.getTime() < 0) {// if for example date1 = 22:00, date2 = 01:55. Calendar c = Calendar.getInstance(); c.setTime(date2); c.add(Calendar.DATE, 1); date2 = c.getTime(); } //else for example date1 = 01:55, date2 = 03:55. long ms = date2.getTime() - date1.getTime(); //235 minutes ~ 4 hours for (22:00 -- 01:55). //120 minutes ~ 2 hours for (01:55 -- 03:55). return TimeUnit.MINUTES.convert(ms, TimeUnit.MILLISECONDS); } 
 Ssortingng start = "12:00:00"; Ssortingng end = "02:05:00"; SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); Date date1 = format.parse(start); Date date2 = format.parse(end); long difference = date2.getTime() - date1.getTime(); int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference); if(minutes<0)minutes += 1440; 

Maintenant, les minutes seront la durée correcte entre deux heures (en minutes).

 import java.text.SimpleDateFormat; import java.util.Date; public class Main { public static void main(Ssortingng[] args) throws Exception{ Ssortingng time1 = "12:00:00"; Ssortingng time2 = "12:01:00"; SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss"); Date date1 = format.parse(time1); Date date2 = format.parse(time2); long difference = date2.getTime() - date1.getTime(); System.out.println(difference/1000); }} 

lève l’exception gère les exceptions d’parsing

  /* * Total time calculation. */ private void getTotalHours() { try { // TODO Auto-generated method stub if (tfTimeIn.getValue() != null && tfTimeOut.getValue() != null) { Long min1 = tfTimeOut.getMinutesValue(); Long min2 = tfTimeIn.getMinutesValue(); Long hr1 = tfTimeOut.getHoursValue(); Long hr2 = tfTimeIn.getHoursValue(); Long hrsTotal = new Long("0"); Long minTotal = new Long("0"); if ((hr2 - hr1) == 1) { hrsTotal = (long) 1; if (min1 != 0 && min2 == 0) { minTotal = (long) 60 - min1; } else if (min1 == 0 && min2 != 0) { minTotal = min2; } else if (min1 != 0 && min2 != 0) { minTotal = min2; Long minOne = (long) 60 - min1; Long minTwo = min2; minTotal = minOne + minTwo; } if (minTotal >= 60) { hrsTotal++; minTotal = minTotal % 60; } } else if ((hr2 - hr1) > 0) { hrsTotal = (hr2 - hr1); if (min1 != 0 && min2 == 0) { minTotal = (long) 60 - min1; } else if (min1 == 0 && min2 != 0) { minTotal = min2; } else if (min1 != 0 && min2 != 0) { minTotal = min2; Long minOne = (long) 60 - min1; Long minTwo = min2; minTotal = minOne + minTwo; } if (minTotal >= 60) { minTotal = minTotal % 60; } } else if ((hr2 - hr1) == 0) { if (min1 != 0 || min2 != 0) { if (min2 > min1) { hrsTotal = (long) 0; minTotal = min2 - min1; } else { Notification.show("Enter A Valid Time"); tfTotalTime.setValue("00.00"); } } } else { Notification.show("Enter A Valid Time"); tfTotalTime.setValue("00.00"); } Ssortingng hrsTotalSsortingng = hrsTotal.toSsortingng(); Ssortingng minTotalSsortingng = minTotal.toSsortingng(); if (hrsTotalSsortingng.sortingm().length() == 1) { hrsTotalSsortingng = "0" + hrsTotalSsortingng; } if (minTotalSsortingng.sortingm().length() == 1) { minTotalSsortingng = "0" + minTotalSsortingng; } tfTotalTime.setValue(hrsTotalSsortingng + ":" + minTotalSsortingng); } else { tfTotalTime.setValue("00.00"); } } catch (Exception e) { e.printStackTrace(); } } 

class TimeCalculator {Ssortingng updateTime;

  public TimeCalculator(Ssortingng time) { // time should be in 24 hours format like 15/06/2016 17:39:20 this.updateTime = time; } public Ssortingng getTimeDifference() { Ssortingng td=null; // get Current Time SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); Date currentDate = new Date(); Calendar calendar = new GregorianCalendar(); calendar.setTime(currentDate); int c_year = calendar.get(Calendar.YEAR); int c_month = calendar.get(Calendar.MONTH) + 1; int c_day = calendar.get(Calendar.DAY_OF_MONTH); // get Editing Time Date edit_date = sdf.parse(updateTime); Calendar edit_calendar = new GregorianCalendar(); edit_calendar.setTime(edit_date); int e_year = edit_calendar.get(Calendar.YEAR); int e_month = edit_calendar.get(Calendar.MONTH) + 1; int e_day = edit_calendar.get(Calendar.DAY_OF_MONTH); if(e_year==c_year&&e_month==c_month&&e_day==c_day) { int c_hours = calendar.get(Calendar.HOUR_OF_DAY); int c_minutes = calendar.get(Calendar.MINUTE); int c_seconds = calendar.get(Calendar.SECOND); int e_hours = edit_calendar.get(Calendar.HOUR_OF_DAY); int e_minutes = edit_calendar.get(Calendar.MINUTE); int e_seconds = edit_calendar.get(Calendar.SECOND); if(c_hours==e_hours&&c_minutes==e_minutes&&c_seconds==e_seconds) { td = "just now"; return td; } else if(c_hours==e_hours&&c_minutes==e_minutes) { int d_seconds = c_seconds-e_seconds; td = Ssortingng.valueOf(d_seconds); td = td+" seconds ago"; return td; } else if(c_hours==e_hours&&c_minutes!=e_minutes) { int d_minutes = c_minutes-e_minutes; int d_seconds; if(c_seconds>e_seconds) { d_seconds = c_seconds-e_seconds; }else{ d_seconds = e_seconds-c_seconds; } td = "00:"+Ssortingng.valueOf(d_minutes)+":"+Ssortingng.valueOf(d_seconds)+" ago"; return td; } else { int d_minutes,d_seconds,d_hours; d_hours=c_hours-e_hours; if(c_minutes>e_minutes) { d_minutes = c_minutes-e_minutes; }else{ d_minutes = e_minutes-c_minutes; } if(c_seconds>e_seconds) { d_seconds = c_seconds-e_seconds; }else{ d_seconds = e_seconds-c_seconds; } td = Ssortingng.valueOf(d_hours)+":"+Ssortingng.valueOf(d_minutes)+":"+Ssortingng.valueOf(d_seconds)+" ago"; return td; } } else if(e_year==c_year&&e_month==c_month&&c_day==e_day+1){ td = "yesterday"; return td; } else{ td = updateTime; return td; } }} 
 public class timeDifference { public static void main(Ssortingng[] args) { try { Date startTime = Calendar.getInstance().getTime(); Thread.sleep(10000); Date endTime = Calendar.getInstance().getTime(); long difference = endTime.getTime() - startTime.getTime(); long differenceSeconds = difference / 1000 % 60; long differenceMinutes = difference / (60 * 1000) % 60; long differenceHours = difference / (60 * 60 * 1000) % 24; long differenceDays = difference / (24 * 60 * 60 * 1000); System.out.println(differenceDays + " days, "); System.out.println(differenceHours + " hours, "); System.out.println(differenceMinutes + " minutes, "); System.out.println(differenceSeconds + " seconds."); } catch (Exception e) { e.printStackTrace(); } } 

}