monthApart

Category: Programming
Author: Marty Stepp
Book Chapter: 4.1
Problem: monthApart
Write a static method named monthApart that accepts four integer parameters month1, day1, month2, and day2,
representing two calendar dates. Each date consists of a month (1 through 12) and a day (1 through the number of
days in that month [28-31]). The method returns true if the dates are at least a month apart and false otherwise.
Dates are defined to be exactly a month apart if their day values are the same and their months differ by 1. For
example, January 20 and February 20 are exactly one month apart, and July 16 and August 16 are exactly one month
apart. Note that it does not matter exactly how many days the given months have.
For example, the following dates are all considered to be at least a month apart from 9/19 (September 19): 2/14,
7/25, 8/2, 8/19, 10/19, 10/20, and 11/5. The following dates are NOT at least a month apart from 9/19: 8/20, 9/1,
9/25, 10/1, 10/15, and 10/18. Note that the first date could come before or after, or be the same as, the second date.
Assume that all parameter values passed are valid.
Sample calls:
monthApart( 6, 14, 9, 21) should return true, because June 14 is at least a month before September 21
monthApart( 4, 5, 5, 15) should return true, because April 5 is at least a month before May 15
monthApart( 4, 15, 5,15) should return true, because April 15 is at least a month before May 15
monthApart( 4, 16, 5, 15) should return false, because April 16 isn't at least a month apart from May 15 
monthApart( 6, 14, 6, 8) should return false, because June 14 isn't at least a month apart from June 8
monthApart( 7, 7, 6, 8) should return false, because July 7 isn't at least a month apart from June 8
monthApart( 7, 8, 6, 8) should return true, because July 8 is at least a month after June 8
monthApart(10, 14, 7, 15) should return true, because October 14 is at least a month after July 15