Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android calculate days between two dates

I have written the following code to find days between two dates

    startDateValue = new Date(startDate);     endDateValue = new Date(endDate);     long diff = endDateValue.getTime() - startDateValue.getTime();     long seconds = diff / 1000;     long minutes = seconds / 60;     long hours = minutes / 60;     long days = (hours / 24) + 1;     Log.d("days", "" + days); 

When start and end date are 2/3/2017 and 3/3/2017 respectively the number of days showing is 29.Though when they are of the same day it is showing 1.(The number of days one takes a leave.So if one takes a single day leave,he has to select same start and end date.So in this case he has taken two days leave).

What am I doing wrong? Thank you for your time.

Note: Please don't use the date constructor. Check the accepted answer below. Use simpledateformat or Joda time. Date constructor is deprecated.

like image 710
debo.stackoverflow Avatar asked Mar 02 '17 10:03

debo.stackoverflow


People also ask

How do I calculate the number of days between two dates?

To calculate the number of days between two dates, you need to subtract the start date from the end date.

How can I compare two dates in Android?

By Calendar Object:getTime(); Date date2 = calendar2. getTime(); Then compare both date using compareTo, before(date) or after(date).

How do I extract data between two dates in spring boot?

We can get the dates between two dates with single method call using the dedicated datesUntil method of a LocalDate class. The datesUntill returns the sequentially ordered Stream of dates starting from the date object whose method is called to the date given as method argument.


1 Answers

Your code for generating date object:

Date date = new Date("2/3/2017"); //deprecated 

You are getting 28 days as answer because according to Date(String) constructor it is thinking day = 3,month = 2 and year = 2017

You can convert String to Date as follows:

String dateStr = "2/3/2017"; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); Date date = sdf.parse(dateStr); 

Use above template to make your Date object. Then use below code for calculating days in between two dates. Hope this clear the thing.

It can de done as follows:

long diff = endDateValue.getTime() - startDateValue.getTime(); System.out.println ("Days: " + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS)); 

Please check link

If you use Joda Time it is much more simple:

int days = Days.daysBetween(date1, date2).getDays(); 

Please check JodaTime

How to use JodaTime in Java Project

like image 127
SachinSarawgi Avatar answered Sep 18 '22 09:09

SachinSarawgi