-2

I have two strings of the form "dd-MM-YYYY HH:mm:ss". How can I find the difference in hours between the two Strings ?

Ole V.V.
  • 81,772
  • 15
  • 137
  • 161
Srijan
  • 43
  • 7
  • 2
    [I downvoted because research must be done to ask a good question](http://idownvotedbecau.se/noresearch/). – Ole V.V. Aug 19 '20 at 06:08
  • Do you know which programming language you want to use? I understand that many are used on Android. – Ole V.V. Aug 19 '20 at 06:10
  • Also see [Android difference between Two Dates](https://stackoverflow.com/questions/21285161/android-difference-between-two-dates). I’m immodest enough to recommend [my own answer there](https://stackoverflow.com/a/45169929/5772882). And also see [my answer here](https://stackoverflow.com/a/48529971/5772882). – Ole V.V. Aug 19 '20 at 06:24

2 Answers2

1

You can converted the String into Date objects, then you may compare them. Something like below

 SimpleDateFormat sdformat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
  Date d1 = sdformat.parse("04-05-2020 02:33:12");
  Date d2 = sdformat.parse("05-05-2020 02:33:12");
  System.out.println("The date 1 is: " + sdformat.format(d1));
  System.out.println("The date 2 is: " + sdformat.format(d2));
  if(d1.compareTo(d2) > 0) {
     System.out.println("Date 1 occurs after Date 2");
  } else if(d1.compareTo(d2) < 0) {
     System.out.println("Date 1 occurs before Date 2");
  } else if(d1.compareTo(d2) == 0) {
     System.out.println("Both dates are equal");
  }
Qben
  • 2,617
  • 2
  • 24
  • 36
vikas kumar
  • 10,447
  • 2
  • 46
  • 52
  • Consider throwing away the long outmoded and notoriously troublesome `SimpleDateFormat` and friends. See if you either can use [desugaring](https://developer.android.com/studio/write/java8-support-table) or add [ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP) to your Android project, in order to use java.time, the modern Java date and time API. It is so much nicer to work with. – Ole V.V. Aug 19 '20 at 06:07
  • 1
    thanks @OleV.V. for the suggestion, yeah i guess now we should move on to java 8 date and time. api's will use from now going forward. – vikas kumar Aug 19 '20 at 06:28
0

You can do it using SimpleDateFormat and Date:

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 


public static long date_hour_diff(String start_date, String end_date) { 
  SimpleDateFormat simple_date_format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
  try {  
    Date parsed_start_date = simple_date_format.parse(start_date); 
    Date parsed_end_date = simple_date_format.parse(end_date); 
  
    long time_diff = d2.getTime() - d1.getTime(); 
    long diff_hours = (time_diff / (1000 * 60 * 60)) % 24; 
    return diff_hours;
  } catch (ParseException e) { 
      Log.e(TAG, "Date is not valid.");
  } 
}
Fede
  • 321
  • 1
  • 9
  • Consider throwing away the long outmoded and notoriously troublesome `SimpleDateFormat` and friends. See if you either can use [desugaring](https://developer.android.com/studio/write/java8-support-table) or add [ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP) to your Android project, in order to use java.time, the modern Java date and time API. It is so much nicer to work with. – Ole V.V. Aug 19 '20 at 06:07