Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Write a program to calculate the difference between two dates in number of days.
- * The dates are entered at two consecutive lines in format day-month-year.
- * Days are in range [1…31]. Months are in range [1…12].
- * Years are in range [1900…2100]. */
- import java.time.LocalDate;
- import java.time.format.DateTimeFormatter;
- import java.util.Scanner;
- public class _07_DaysBetweenTwoDates_Using_LocalDate {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- Scanner scan = new Scanner(System.in);
- System.out.println("Enter 2 dates exactly in this format [day-month-year]: ");
- String firstInputStr = scan.next();
- String secondInputStr = scan.next();
- LocalDate startDate = convertSpecificInputDateStringToLocalDate(firstInputStr);
- LocalDate endDate = convertSpecificInputDateStringToLocalDate(secondInputStr);
- long resultDays = 0;
- if (!endDate.equals(startDate)) {
- boolean resultIsNegative = endDate.isBefore(startDate);
- int startYear = startDate.getYear();
- int startDayOfYear = startDate.getDayOfYear();
- int endYear = endDate.getYear();
- int endDayOfYear = endDate.getDayOfYear();
- int yearsBetweenDates = getYearsBetweenTwoDates(resultIsNegative,
- startYear, startDayOfYear, endYear, endDayOfYear);
- double daysBetweenDates = yearsBetweenDates * 365.2425;
- int differenceDayOfYear = getDifferenceFromDayOfYearComponent(
- resultIsNegative, startDayOfYear, endDayOfYear);
- resultDays = Math.round(daysBetweenDates + differenceDayOfYear);
- }
- System.out.printf("The number of Days between these 2 dates is: %d !\n",
- resultDays);
- }
- private static int getDifferenceFromDayOfYearComponent(
- boolean resultIsNegative, int startDayOfYear, int endDayOfYear) {
- int differenceDayOfYear = 0;
- if (endDayOfYear != startDayOfYear) {
- differenceDayOfYear = endDayOfYear - startDayOfYear;
- if (resultIsNegative && endDayOfYear > startDayOfYear) {
- differenceDayOfYear -= 365;
- } else if (!resultIsNegative && endDayOfYear < startDayOfYear) {
- differenceDayOfYear += 365;
- }
- }
- return differenceDayOfYear;
- }
- private static int getYearsBetweenTwoDates(boolean resultIsNegative,
- int startYear, int startDayOfYear, int endYear, int endDayOfYear) {
- int yearsBetweenDates = 0;
- if (endYear != startYear) {
- yearsBetweenDates = endYear - startYear;
- if (resultIsNegative && endDayOfYear > startDayOfYear) {
- yearsBetweenDates += 1;
- } else if (!resultIsNegative && endDayOfYear < startDayOfYear) {
- yearsBetweenDates -= 1;
- }
- }
- return yearsBetweenDates;
- }
- private static LocalDate convertSpecificInputDateStringToLocalDate(String inputStr) {
- // TODO Auto-generated method stub
- DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("d-MM-yyyy");
- return LocalDate.parse(inputStr, dateFormat);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement