I am writing a simple java class for date calculations, I am aware there are probably better ones out there, but I want to do this myself for practicing purposes. I am planning on expanding this class but I am posting this here mainly because this is the first time I am doing something OOP related and the first time I am using java as well and I want some feedback.
package oop; public class Date { private String hour = null; private String minute = null; private String second = null; private String day = null; private String month = null; private String year = null; private String meridiem = null; public Date(String hour, String minute, String second, String meridiem) { this.hour = hour; this.minute = minute; this.second = second; this.meridiem = meridiem; } public Date(String day, String month, String year) { this.day = day; this.month = month; this.year = year; } public Date(String hour, String minute, String second, String meridiem, String day, String month, String year) { this.hour = hour; this.minute = minute; this.second = second; this.meridiem = meridiem; this.day = day; this.month = month; this.year = year; } public String concatenateDate() { String fullDate = ""; if(hour != null) { fullDate += hour + ":" + minute + ":" + second; } if(day != null) { if(hour != null) fullDate += " "; fullDate += day + "/" + month + "/" + year; } return fullDate; } public int daysUntilNextYear() { int nextYear = 0; int daysLeft = -1; System.out.println(year != null); if(year != null) { daysLeft = daysDistance(new Date("01", "01", Integer.toString(Integer.parseInt(year)+1))); } return daysLeft; } private int getDaysGone(int day, int month, int year) { int daysGone = day; if(month == 2) daysGone += 31; else if(month == 3) daysGone += 59; else if(month == 4) daysGone += 90; else if(month == 5) daysGone += 120; else if(month == 6) daysGone += 151; else if(month == 7)daysGone += 181; else if(month == 8)daysGone += 212; else if(month == 9)daysGone += 243; else if(month == 10) daysGone +=273; else if(month == 11)daysGone += 304; else if(month == 12)daysGone += 334; if(isLeapYear(year) && month > 2) { daysGone ++; } return daysGone; } private boolean isLeapYear(int year) { if(year%400 == 0 || (year%100 != 0 && year%4 == 0 )) { return true; } else { return false; } } public int daysDistance(Date secondDate) { int daysDistance = 0; try { int year = Integer.parseInt(this.year); int month = Integer.parseInt(this.month); int day = Integer.parseInt(this.day); int secondYear = Integer.parseInt(secondDate.getYear()); int secondMonth = Integer.parseInt(secondDate.getMonth()); int secondDay = Integer.parseInt(secondDate.getDay()); daysDistance += (secondYear - year) * 365; daysDistance += (getDaysGone(secondDay, secondMonth, secondYear) - getDaysGone(day, month, year) -1); daysDistance = Math.abs(daysDistance); if(secondYear > year) { for(int i = year+1; i < secondYear; i++) { if(isLeapYear(i)) { daysDistance ++; } } if(isLeapYear(year) && month < 3) daysDistance++; if(isLeapYear(secondYear) && secondMonth > 3) daysDistance++; } else if(secondYear == year) { if(secondMonth > month) { if(isLeapYear(year) && month < 3 && secondMonth > 3) daysDistance ++; } else { if(isLeapYear(year) && month > 3 && secondMonth < 3) daysDistance ++; } } else { for(int i = secondYear+1; i < year; i++) { if(isLeapYear(i)) { daysDistance ++; } } if(isLeapYear(year) && month > 3) daysDistance ++; if(isLeapYear(secondYear) && secondMonth < 3) daysDistance++; } } catch(Exception e) { daysDistance = -1; } return daysDistance; } public int secondsUntilDate(Date secondDate) { int secondsLeft = 0; try { secondsLeft += (daysDistance(secondDate)) * 86400; secondsLeft += 86400 - (Integer.parseInt(hour)*3600 + Integer.parseInt(second)) ; } catch(Exception e) { secondsLeft = -1; } return secondsLeft; } public String getDay() { return day; } public String getMonth() { return month; } public String getYear() { return year; } public String getHour() { return hour; } public String getMinute() { return minute; } public String getSecond() { return second; } public String getMeridiem() { return meridiem; } }