Skip to main content

Best way to compare time in Eclipse RCP

Best way to compare time in Eclipse RCP



Disadvantage of Using Date for Time comparison:

First of all let's understand why java.util.Date is not effective to just compare time.
If you are using java.util.Date and add two different time and if it exceed beyond 24 hours, it will add 1 day to the java.util.Date.
e.g.


Date date1 = new Date(0, 0, 0, 20, 59, 59);
System.out.println("Date 1: "+date1);
Date date2 = new Date(0, 0, 0, 5, 1, 1);
System.out.println("Date 2: "+date2);

Date additionDate = new Date(date2.getTime());

additionDate.setHours(date2.getHours()+ date1.getHours());
additionDate.setMinutes(date2.getMinutes()+ date1.getMinutes());
additionDate.setSeconds(date2.getSeconds()+ date1.getSeconds());

System.out.println("Addition: "+additionDate);

Output:


Date 1: Sun Dec 31 20:59:59 IST 1899
Date 2: Sun Dec 31 05:01:01 IST 1899
Addition: Mon Jan 01 02:01:00 IST 1900

As you can see here, the date is increase to one Day. so to calculate just time, using java.util.Date should not be preferred. Instead of that, java.time.LocalTime can be used to calculate Time.

java.time.LocalTime is the one of the best way to compare only time. java.time.LocalTime is without a time-zone in the ISO-8601 calendar system, such as 07:07:40.

java.time.LocalTime can be used to track the timing.

Following Example shows:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.time.LocalTime;

public class CompareTimeExample {
 public static void main(String[] args) {

                // Current Time
  LocalTime localTime1 = LocalTime.now();
  System.out.println(localTime1);

  // Specific Time
  LocalTime localTime2 = LocalTime.of(7, 20, 10);
  System.out.println(localTime2);
  
  // Compare time
  System.out.println("is Before : "+localTime1.isBefore(localTime2));
  System.out.println("is After : "+localTime1.isAfter(localTime2));
  
  // Difference between two time
  LocalTime minusTime = localTime1.minusHours(localTime2.getHour()).minusMinutes(localTime2.getMinute()).minusSeconds(localTime2.getSecond());
  System.out.println(minusTime);
  
 }
}

Output :


23:36:54.639
07:20:10
is Before : false
is After : true
16:16:44.639


Summary

java.time.LocalTime is useful when two different time has to be compared without time-zone.


Comments

Popular posts from this blog

Could not launch the product because the associated workspace is currently in use by another Eclipse application

If you are seeing following error at the beginning of the Eclipse or any RCP based product then here is the solution: Error Message: "Could not launch the product because the associated workspace is currently in use by another Eclipse application." or “Workspace in use or cannot be created chose a different one.” Solution :  go to workspace location remove file <workspace location>/.metadata/.lock Reason: Through eclipse, user can create multiple Workspace locations. One Workspace location can be edited by one user at a time. A workspace contains the data related to various project configuration and local file storage. To avoid multiple users to access the same workspace, eclipse is maintaining a ".lock" file inside the Workspace. Eclipse will remove this ".lock" file when you will close the Eclipse. But in some cases, the Eclipse will crash due to some error, due to which it could not able to remove ".lock" file from...

HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException

HHH000424: Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException If you get following error while connecting to your Database with Spring boot, try the suggested solution below: 2018 - 11 - 25 15 : 28 : 50.078 INFO 5335 --- [ main] o. h . e . j . e . i . LobCreatorBuilderImpl : HHH000424: Disabling contextual LOB creation as createClob() method threw error : java. lang . reflect . InvocationTargetException java. lang . reflect . InvocationTargetException : null at sun. reflect . NativeMethodAccessorImpl . invoke0 (Native Method) ~[na: 1.8 . 0 _161] at sun. reflect . NativeMethodAccessorImpl . invoke (NativeMethodAccessorImpl. java : 62 ) ~[na: 1.8 . 0 _161] at sun. reflect . DelegatingMethodAccessorImpl . invoke (DelegatingMethodAccessorImpl. java : 43 ) ~[na: 1.8 . 0 _161] at java. lang . reflect . Method . invoke (Method. java : 498 ) ~[na: 1.8 . 0 _161] at org. hibernate . engin...

Cannot complete the install because one or more required items could not be found.

Error While installing Maven in Eclipse Cannot complete the install because one or more required items could not be found.   Software being installed: m2e - Maven Integration for Eclipse 1.4.0.20130601-0317 (org.eclipse.m2e.feature. feature.group 1.4.0.20130601-0317)   Missing requirement: Maven POM XML Editor 1.4.0.20130601-0317 (org.eclipse.m2e.editor.xml 1.4.0.20130601-0317) requires 'bundle org.slf4j.api 1.6.2' but it could not be found   Cannot satisfy dependency:     From: Maven Integration for Eclipse (Editors) 1.4.0.20130601-0317 (org.eclipse.m2e.editor 1.4.0.20130601-0317)     To: bundle org.eclipse.m2e.editor.xml [1.4.0,1.5.0)   Cannot satisfy dependency:     From: m2e - Maven Integration for Eclipse 1.4.0.20130601-0317 (org.eclipse.m2e.feature. feature.group 1.4.0.20130601-0317)     To: org.eclipse.m2e.editor [1.4.0.20130601-0317] Solution : 1. Goto : Help -> Install New Software 2. Ad...