Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between two datetime formats in android?

As i am new to android development I am unable to find code for calculating the difference between two datetime formats. My question is.

I am using webservice in my project where i am getting datetime response as follows..

 starttime  :- [2012-11-04 10:00:00]
 endtime    :- [2012-11-04 12:00:00]

Here i want to display on screen as

   Today Timings  :-  2012-11-04   2 hours

Means need to calculate the difference between two dates and need to display the time difference on screen.

Can anyone please help me with this.


2 Answers

Given you know the exact format in which you are getting the date-time object, you could use the SimpleDateFormat class in Android which allows you to parse a string as a date given the format of the date expressed in the string. For your question:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = sdf.parse(<startTime/endTime String>, 0);

Similarly parse your endtime, and then the difference can be obtained using getTime() of the individual objects.

long diff = endTime.getTime() - startTime.getTime()

Then it's as simple as converting the difference to hours using:

int hours = (int)(diff/(60*60*1000));

Hope that helps.

like image 191
varevarao Avatar answered Feb 22 '26 02:02

varevarao


java.time

Solution using java.time, the modern API:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u-M-d H:m:s", Locale.ENGLISH);
        LocalDateTime startTime = LocalDateTime.parse("2012-11-04 10:00:00", dtf);
        LocalDateTime endTime = LocalDateTime.parse("2012-11-04 12:00:00", dtf);
        long hours = ChronoUnit.HOURS.between(startTime, endTime);
        System.out.println(hours);
    }
}

Output:

2

Learn more about the the modern date-time API* from Trail: Date Time.


* For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and How to use ThreeTenABP in Android Project.

like image 25
Arvind Kumar Avinash Avatar answered Feb 22 '26 03:02

Arvind Kumar Avinash