Hey guys I'm working on a program that asks the user to enter a month and year and then prints that month's calendar page on the screen. However, to do this I created a daysBetween() method that accepts 2 dates and finds the number of days between them. So basically I need some advice for subtracting 2 dates and finding the days between them... I don't want code but just general ideas for algorithms or approaches I could use. Because it's proving to be much more difficult to implement than I previously thought.

Thanks so much!
~Kvass

4
Contributors
10
Replies
11
Views
8 Years
Discussion Span
Last Post by JamesCherrill

Create Calendar objects, get the epoch times for each, subtract and divide.

Edited by NormR1: n/a

epoch times?

Please be more specific. I don't need code, but I need more thorough explanation.

epoch times

Which part don't you understand?
Use SimpleDateFormat to get a Date object for the two dates.
Get the epoch times for each date.
Subtract the times
Convert the time difference to days.

Edited by NormR1: n/a

Ok -- but I was kind of hoping to solve this problem on my own without the assistance of other objects (aside from Scanner for user input). Because I would rather understand the mathematical or algorithmic approach to this problem rather than just use an object that someone else made for me.

Go ahead and write as much code as you want.
I've reinvented a few wheels in my time. You learn sometimes. Other times, you just waste time.

Edited by NormR1: n/a

Ok -- so can some1 help give me a pointer on reinventing this wheel?

I need some advice for subtracting 2 dates and finding the days between them... I don't want code but just general ideas for an algorithm I could use. Because it's proving to be much more difficult to implement than I previously thought. And I don't want to use the Calendar and Date classes predefined in the Java API.

Starting at older date, add one day to it and see if it is the end date.
Define a class that defines a date as day, month, year.
to compare against another date

Edited by NormR1: n/a

Or:
Write a method to convert a date (int yyyy, int mm, int dd) to the number of days after Jan 1st 1900 (or some other convenient earliest date) - something along the lines of

``````int daysAfterJan1st1900(int yyyy, int mm, int dd) {
return (yyyy - 1900)*365 + (something for leap years) + (number of days in each month up to mm) + dd;
}``````

Once you have written this, then you can trivially convert both your dates to days after 1/1/1900 and subtract them. You can also get day of the week by just calculating %7 on that.
(This is how date libraries usually work.)

Edited by JamesCherrill: n/a

Is there any problem for 1900 in java calender.
I am trying to add 1900 but it gives error

No problem (except that it's not a leap year, even tho it's divisible by 4).

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.