/* The complex Java code can be used to convert time (Years, Months, Dates, Hours, Minutes, Seconds).
It will display appropriate time (years, months, dates, etc) when time is increased or decreased. For example, it will show leap year, months (28, 29, 30, or 31 days).
*/
package timeside;
import java.util.Scanner;
class MyTime
{
Scanner input = new Scanner(System.in);
int year, month, day, hour, minute, second;
private String Month;
int time[][] = new int[3][6];
MyTime(int i)
{
year = i;
month = i;
day = i;
hour = i;
minute= i;
second= i;
}
String convertMonth(int mont)
{
switch (mont)
{
case 1:
Month = "January";
break;
case 2:
Month = "February";
break;
case 3:
Month = "March";
break;
case 4:
Month = "April";
break;
case 5:
Month = "May";
break;
case 6:
Month = "June";
break;
case 7:
Month = "July";
break;
case 8:
Month = "August";
break;
case 9:
Month = "September";
break;
case 10:
Month = "October";
break;
case 11:
Month = "November";
break;
case 12:
Month = "December";
break;
default:
System.out.println("Invalid month !");
}
return Month;
}
boolean chkLeapYr(int year)
{
if (year%4 != 0) // common year
return false;
else if (year%100 != 0) // leap year
return true;
else if (year%400 != 0) // common year
return false;
else
return true; // leap year
}
void enterDate()
{
int i;
for (i=0; i<3; i++)
{
switch (i)
{
case 0:
System.out.print("Enter Year: ");
time[0][0] = input.nextInt();
if (time[0][0]<1 | time[0][0]>9999)
{
System.out.print("Invalid year. It should be between 1 and 9999. Reenter years: ");
time[0][0] = input.nextInt();
}
break;
case 1:
System.out.print("Enter Month: ");
time[0][1] = input.nextInt();
if (time[0][1]<1 | time[0][1]>12)
{
System.out.print("Invalid month. It should be between 1 and 12. Reenter months: ");
time[0][1] = input.nextInt();
}
break;
case 2:
System.out.print("Enter Day: ");
time[0][2] = input.nextInt();
switch (time[0][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[0][2]<1 | time[0][2]>31)
{
System.out.print("Invalid day. It should be between 1 and 31. Reenter days: ");
time[0][2] = input.nextInt();
}
break;
case 2:
if (chkLeapYr(time[0][0]) == true) // leap year
{
if (time[0][2]<1 | time[0][2]>29)
{
System.out.print("Invalid day. It should be between 1 and 29. Reenter days: ");
time[0][2] = input.nextInt();
}
}
if (chkLeapYr(time[0][0]) == false) // common year
{
if (time[0][2]<0 | time[0][2]>28)
{
System.out.print("Invalid day. It should be between 1 and 28. Reenter days: ");
time[0][2] = input.nextInt();
}
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[0][2]<1 | time[0][2]>30)
{
System.out.print("Invalid day. It should be between 1 and 30. Reenter days: ");
time[0][2] = input.nextInt();
}
break;
}
break;
default:
System.out.println("Invalid date");
}
}
for (i=0; i<3; i++) // copy time[0][0,1,2] to time[1][0,1,2] and time[2][0,1,2]
{
time[1][i] = time[0][i];
time[2][i] = time[0][i];
}
}
void enterTime()
{
int i, temp;
for (i=0; i<3; i++)
{
switch (i)
{
case 0:
System.out.print("Enter Hours: ");
time[0][3] = input.nextInt();
if (time[0][3]<0 | time[0][3]>23)
{
System.out.print("Invalid hours. It should be between 0 and 23. Reenter hours: ");
time[0][3] = input.nextInt();
}
break;
case 1:
System.out.print("Enter Minutes: ");
time[0][4] = input.nextInt();
if (time[0][4]<0 | time[0][4]>59)
{
System.out.print("Invalid minutes. It should be between 0 and 59. Reenter minutes: ");
time[0][4] = input.nextInt();
}
break;
case 2:
System.out.print("Enter Seconds: ");
time[0][5] = input.nextInt();
if (time[0][5]<0 | time[0][5]>59)
{
System.out.print("Invalid seconds. It should be between 0 and 59. Reenter seconds: ");
time[0][5] = input.nextInt();
}
break;
default:
System.out.println("Invalid time");
}
}
for (i=3; i<6; i++) // copy time[0][3,4,5] to time[1][3,4,5] and time[2][3,4,5]
{
time[1][i] = time[0][i];
time[2][i] = time[0][i];
}
}
void displayStdTime(int month, int day, int year, int hour, int minute, int second)
{
int hr=0;
String mon;
//System.out.println(month+"/"+day+"/"+year+" "+hour+":"+minute+":"+second);
//System.out.print(" Standard form: ");
mon = convertMonth(month);
switch (hour)
{
case 12:
hr = hour;
break;
case 13:
hr = hour-12;
break;
case 14:
hr = hour-12;
break;
case 15:
hr = hour-12;
break;
case 16:
hr = hour-12;
break;
case 17:
hr = hour-12;
break;
case 18:
hr = hour-12;
break;
case 19:
hr = hour-12;
break;
case 20:
hr = hour-12;
break;
case 21:
hr = hour-12;
break;
case 22:
hr = hour-12;
break;
case 23:
hr = hour-12;
break;
}
System.out.print(mon+" ");
if (day<=9)
System.out.print("0"+day+",");
else System.out.print(day+",");
if (year>999 & year<=9999)
System.out.print(" "+year);
else if (year>99 & year<=999)
System.out.print(" "+"0"+year);
else if (year>9 & year<=99)
System.out.print(" "+"00"+year);
else if (year>=1 & year<=9)
System.out.print(" "+"000"+year);
else System.out.print(" "+year);
if (hour<12)
{
if (hour<=9)
{
if (hour==0)
System.out.print(" "+"12");
else System.out.print(" "+"0"+hour);
}
else System.out.print(" "+hour);
}
else
{
hr = hour-12;
if (hr<=9)
{
if (hour==0)
System.out.print(" "+"12");
else System.out.print(" "+"0"+hr);
}
else System.out.print(" "+hr);
}
if (minute<=9)
System.out.print(":"+"0"+minute);
else System.out.print(":"+minute);
if (second<=9)
System.out.print(":"+"0"+second);
else System.out.print(":"+second);
if (hour<12)
System.out.print(" AM");
else System.out.print(" PM");
System.out.println("");
}
void displayMilTime(int month, int day, int year, int hour, int minute, int second)
{
if (month<=9)
System.out.print("0"+month);
else System.out.print(month);
if (day<=9)
System.out.print("/"+"0"+day);
else System.out.print("/"+day);
if (year>999 & year<=9999)
System.out.print("/"+year);
else if (year>99 & year<=999)
System.out.print("/"+"0"+year);
else if (year>9 & year<=99)
System.out.print("/"+"00"+year);
else if (year>=1 & year<=9)
System.out.print("/"+"000"+year);
else System.out.print("/"+year);
if (hour<=9)
System.out.print(" "+"0"+hour);
else System.out.print(" "+hour);
if (minute<=9)
System.out.print(":"+"0"+minute);
else System.out.print(":"+minute);
if (second<=9)
System.out.print(":"+"0"+second);
else System.out.print(":"+second);
System.out.println("");
}
////////////////////////////////////////////////////////////////////////////////
void increaseTime(String str)
{
int temp;
switch (str)
{
///
case "1s": // seconds
//System.out.print(" Increment 1 second.");
temp = 1; // By default 1s
time[1][5] = time[1][5]+temp;
if (time[1][5]>59) // number of seconds > 59
{
time[1][5] = time[1][5]-60;
time[1][4] = ++time[1][4]; // increment number of minutes by 1 mn
}
if (time[1][4]>59)
{
time[1][4] = time[1][4]-60;
time[1][3] = ++time[1][3]; // increment number of hrs by 1 hr
}
if (time[1][3]>23)
{
time[1][3] = time[1][3]-24;
switch (time[1][1])
{
case 1: //31 days
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
time[1][2] = ++time[1][2];
if (time[1][2]>31)
{
time[1][2] = time[1][2]-31;
time[1][1] = ++time[1][1];
}
break;
case 4: //30 days
case 6:
case 9:
case 11:
time[1][2] = ++time[1][2];
if (time[1][2]>30)
{
time[1][2] = time[1][2]-30;
time[1][1] = ++time[1][1];
}
break;
case 2: // 28 or 29
time[1][2] = ++time[1][2];
if (chkLeapYr(time[1][0])) // leap year
{
if (time[1][2]>29)
{
time[1][2] = time[1][2]-29; // days
time[1][1] = ++time[1][1]; // month+1
}
}
else // common year
if (time[1][2]>28)
{
time[1][2] = time[1][2]-28; // days
time[1][1] = ++time[1][1]; // month+1
}
break;
}
}
switch(time[1][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[1][2]>31)
{
time[1][2] = time[1][2]-31; // days
time[1][1] = ++time[1][1]; // month+1
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[1][2]>30)
{
time[1][2] = time[1][2]-30; // days
time[1][1] = ++time[1][1]; // month+1
}
break;
case 2:
if (chkLeapYr(time[1][0])) // leap year
{
if (time[1][2]>29)
{
time[1][2] = time[1][2]-29; // days
time[1][1] = ++time[1][1]; // month+1
}
}
else // common year
if (time[1][2]>28)
{
time[1][2] = time[1][2]-28; // days
time[1][1] = ++time[1][1]; // month+1
}
break;
}
if (time[1][1]>12) // months
{
time[1][1] = time[1][1]-12; // months
time[1][0] = ++time[1][0];
}
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
///
case "s": // seconds
System.out.print(" Increase seconds by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid seconds. It should be more than 0. Reenter seconds: ");
temp = input.nextInt();
time[1][5] = time[1][5]+temp;
} else time[1][5] = time[1][5]+temp;
if (time[1][5]>59) // number of seconds > 59
{
time[1][4] = time[1][4]+time[1][5]/60; // increment number of minutes by 1 mn
time[1][5] = time[1][5]%60; // Remainder = seconds
}
if (time[1][4]>59)
{
time[1][3] = time[1][3]+time[1][4]/60; // increase hours
time[1][4] = time[1][4]%60;
}
if (time[1][3]>23)
{
time[1][2] = time[1][2]+time[1][3]/24; // increase days
time[1][3] = time[1][3]%24;
}
switch(time[1][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[1][2]>31)
{
time[1][1] = time[1][1]+time[1][2]/31; // icrease months
time[1][2] = time[1][2]%31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[1][2]>30)
{
time[1][1] = time[1][1]+time[1][2]/30; // increase months
time[1][2] = time[1][2]%30; // days
}
break;
case 2:
if (chkLeapYr(time[1][0])) // leap year
{
if (time[1][2]>29)
{
time[1][1] = time[1][1]+time[1][2]/29; // increase months
time[1][2] = time[1][2]%29; // days
}
}
else // common year
if (time[1][2]>28)
{
time[1][1] = time[1][1]+time[1][2]/28; // increase months
time[1][2] = time[1][2]%28; // days
}
break;
}
if (time[1][1]>12) // months
{
time[1][0] = time[1][0]+time[1][1]/12;
time[1][1] = time[1][1]%12; // months
}
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
////////
case "m": // minutes
System.out.print(" Increase minutes by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid minutes. It should be more than 0. Reenter minutes: ");
temp = input.nextInt();
time[1][4] = time[1][4]+temp;
} else time[1][4] = time[1][4]+temp;
if (time[1][4]>59)
{
time[1][3] = time[1][3]+time[1][4]/60; // increase hours
time[1][4] = time[1][4]%60;
}
if (time[1][3]>23)
{
time[1][2] = time[1][2]+time[1][3]/24; // increase days
time[1][3] = time[1][3]%24;
}
switch(time[1][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[1][2]>31)
{
time[1][1] = time[1][1]+time[1][2]/31; // increase months
time[1][2] = time[1][2]%31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[1][2]>30)
{
time[1][1] = time[1][1]+time[1][2]/30; // icrease months
time[1][2] = time[1][2]%30; // days
}
break;
case 2:
if (chkLeapYr(time[1][0])) // leap year
{
if (time[1][2]>29)
{
time[1][1] = time[1][1]+time[1][2]/29; // increase months
time[1][2] = time[1][2]%29; // days
}
}
else // common year
if (time[1][2]>28)
{
time[1][1] = time[1][1]+time[1][2]/28; // increase months
time[1][2] = time[1][2]%28; // days
}
break;
}
if (time[1][1]>12) // months
{
time[1][0] = time[1][0]+time[1][1]/12;
time[1][1] = time[1][1]%12; // days
}
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
///
case "h": // hours
System.out.print(" Increase hours by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid hours. It should be more than 0. Reenter hours: ");
temp = input.nextInt();
time[1][3] = time[1][3]+temp;
} else time[1][3] = time[1][3]+temp;
if (time[1][3]>23)
{
time[1][2] = time[1][2]+time[1][3]/24; // increase days
time[1][3] = time[1][3]%24;
}
switch(time[1][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[1][2]>31)
{
time[1][1] = time[1][1]+time[1][2]/31; // increase months
time[1][2] = time[1][2]%31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[1][2]>30)
{
time[1][1] = time[1][1]+time[1][2]/30; // increase months
time[1][2] = time[1][2]%30; // days
}
break;
case 2:
if (chkLeapYr(time[1][0])) // leap year
{
if (time[1][2]>29)
{
time[1][1] = time[1][1]+time[1][2]/29; // increase months
time[1][2] = time[1][2]%29; // days
}
}
else // common year
if (time[1][2]>28)
{
time[1][1] = time[1][1]+time[1][2]/28; // increase months
time[1][2] = time[1][2]%28; // days
}
break;
}
if (time[1][1]>12) // months
{
time[1][0] = time[1][0]+time[1][1]/12;
time[1][1] = time[1][1]%12; // months
}
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
///
case "D":
System.out.print(" Increase days by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid days. It should be more than 0. Reenter days: ");
temp = input.nextInt();
time[1][2] = time[1][2]+temp;
} else time[1][2] = time[1][2]+temp;
switch(time[1][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[1][2]>31)
{
time[1][1] = time[1][1]+time[1][2]/31; // increase months
time[1][2] = time[1][2]%31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[1][2]>30)
{
time[1][1] = time[1][1]+time[1][2]/31; // increase months
time[1][2] = time[1][2]%30; // days
}
break;
case 2:
if (chkLeapYr(time[1][0])) // leap year
{
if (time[1][2]>29)
{
time[1][1] = time[1][1]+time[1][2]/29; // increase months
time[1][2] = time[1][2]%29; // days
}
}
else // common year
if (time[1][2]>28)
{
time[1][1] = time[1][1]+time[1][2]/28; // increase months
time[1][2] = time[1][2]%28; // days
}
break;
}
if (time[1][1]>12) // months
{
time[1][0] = time[1][0]+time[1][1]/12;
time[1][1] = time[1][1]%12; // months
}
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
///
case "M": // Months
System.out.print(" Increase months by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid month. It should be more than 0. Reenter months: ");
temp = input.nextInt();
time[1][1] = time[1][1]+temp;
} else time[1][1] = time[1][1]+temp;
if (time[1][1]>12) // months
{
time[1][0] = time[1][0]+time[1][1]/12;
time[1][1] = time[1][1]%12; // days
}
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
////////
case "Y": // Years
System.out.print(" Increase years by ");
temp = input.nextInt();
if (temp<1 | temp>9999)
{
System.out.println("Invalid year. It should be between 1 and 9999. Reenter years: ");
temp = input.nextInt();
time[1][0] = time[1][0]+temp;
} else time[1][0] = time[1][0]+temp;
if (time[1][0]>9999)
System.out.println("Invalid year !");
break;
default: System.out.println("Invalid date or time!");
}
}
////////////////////////////////////////////////////////////////////////////////
void decreaseTime(String str)
{
int temp;
switch (str)
{
case "1s": // seconds
//System.out.print(" Decrement 1 second.");
temp = 1; // By default 1s
time[2][5] = time[2][5]-temp; // temp>0
if (time[2][5]<0)
{
time[2][5] = 60+time[2][5];
time[2][4] = --time[2][4]; // decrement minutes by 1 mn
}
if (time[2][4]<0)
{
time[2][4] = 60+time[2][4];
time[2][3] = --time[2][3]; // decrement hrs by 1 hr
}
if (time[2][3]<0)
{
time[2][3] = 24+time[2][3];
time[2][2] = --time[2][2]; // decrement days by 1 day
}
switch(time[2][1]) // month
{
case 1: // 31 days per month
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[2][2]==0)
{
switch(time[2][1])
{
case 1:
case 8:
time[2][2] = 31+time[2][2]; // days
if (time[2][1]==1)
{
time[2][1]=12;
time[2][0]=--time[2][0];
}
else time[2][1] = --time[2][1]; // months-1
break;
case 3:
if (chkLeapYr(time[2][0])) // leap year
{
time[2][2] = 29+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
else // not leap year = common year
{
time[2][2] = 28+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
break;
case 5:
case 7:
case 10:
case 12:
time[2][2] = 30+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
break;
}
}
if (time[2][2]<0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][2] = 30+time[2][2]; // days
time[2][1] = --time[2][1]; // month+1
}
break;
case 2:
if (chkLeapYr(time[2][0])) // leap year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][2] = 29+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
}
else // common year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][2] = 28+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
}
break;
}
if (time[2][1]<0) // months
{
time[2][1] = 12+time[2][1]; // months
time[2][0] = --time[2][0]; // years-1
}
break;
case "s": // seconds
System.out.print(" Decrease seconds by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid seconds. It should be more than 0. Reenter seconds: ");
temp = input.nextInt();
time[2][5] = time[2][5]-temp;
} else time[2][5] = time[2][5]-temp; // temp>0
if (time[2][5]<0)
{
time[2][4] = time[2][4]-(Math.abs(time[2][5])/60+1); // decrease mn
time[2][5] = time[2][5]+(Math.abs(time[2][5])/60+1)*60;
}
if (time[2][4]<0)
{
time[2][3] = time[2][3]-(Math.abs(time[2][4])/60+1); // decrease hr
time[2][4] = time[2][4]+(Math.abs(time[2][4])/60+1)*60;
}
if (time[2][3]<0)
{
time[2][2] = time[2][2]-(Math.abs(time[2][3])/24+1); // decrease days
time[2][3] = time[2][3]+(Math.abs(time[2][3])/24+1)*24;
}
switch(time[2][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[2][2]==0)
{
switch(time[2][1])
{
case 1:
case 8:
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
break;
case 3:
if (chkLeapYr(time[2][0])) // leap year
{
time[2][2] = 29+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
else // not leap year = common year
{
time[2][2] = 28+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
break;
case 5:
case 7:
case 10:
case 12:
time[2][2] = 30+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
break;
}
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/31+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/31+1)*31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/30+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/30+1)*30; // days
}
break;
case 2:
if (chkLeapYr(time[2][0])) // leap year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/29+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/29+1)*29; // days
}
}
else // common year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/28+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/28+1)*28; // days
}
}
break;
}
if (time[2][1]<0) // months
{
time[2][0] = time[2][0]-(Math.abs(time[2][1])/12+1);
time[2][1] = time[2][1]+(Math.abs(time[2][1])/12+1)*12;
}
break;
case "m": // minutes
System.out.print(" Decrease minutes by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid minutes. It should be more than 0. Reenter minutes: ");
temp = input.nextInt();
time[2][4] = time[2][4]-temp;
} else time[2][4] = time[2][4]-temp;
if (time[2][4]<0)
{
time[2][3] = time[2][3]-(Math.abs(time[2][4])/60+1); // decrease hrs
time[2][4] = time[2][4]+(Math.abs(time[2][4])/60+1)*60;
}
if (time[2][3]<0)
{
time[2][2] = time[2][2]-(Math.abs(time[2][3])/24+1); // decrease days
time[2][3] = time[2][3]+(Math.abs(time[2][3])/24+1)*24;
}
switch(time[2][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[2][2]==0)
{
switch(time[2][1])
{
case 1:
case 8:
time[2][2] = 31+time[2][2]; // days
if (time[2][1]==1)
{
time[2][1]=12;
time[2][0]=--time[2][0];
}
else time[2][1] = --time[2][1]; // months-1
break;
case 3:
if (chkLeapYr(time[2][0])) // leap year
{
time[2][2] = 29+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
else // not leap year = common year
{
time[2][2] = 28+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
break;
case 5:
case 7:
case 10:
case 12:
time[2][2] = 30+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
break;
}
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/31+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/31+1)*31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/30+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/30+1)*30; // days
}
break;
case 2:
if (chkLeapYr(time[2][0])) // leap year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/29+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/29+1)*29; // days
}
}
else // common year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/28+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/28+1)*28; // days
}
}
break;
}
if (time[2][1]<0) // months
{
time[2][0] = time[2][0]-(Math.abs(time[2][1])/12+1);
time[2][1] = time[2][1]+(Math.abs(time[2][1])/12+1)*12;
}
break;
case "h": // hours
System.out.print(" Decrease hours by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid hours. It should be more than 0. Reenter hours: ");
temp = input.nextInt();
time[2][3] = time[2][3]-temp;
} else time[2][3] = time[2][3]-temp;
if (time[2][3]<0)
{
time[2][2] = time[2][2]-(Math.abs(time[2][3])/24+1); // decrease days
time[2][3] = time[2][3]+(Math.abs(time[2][3])/24+1)*24;
}
switch(time[2][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[2][2]==0)
{
switch(time[2][1])
{
case 1:
case 8:
time[2][2] = 31+time[2][2]; // days
if (time[2][1]==1)
{
time[2][1]=12;
time[2][0]=--time[2][0];
}
else time[2][1] = --time[2][1]; // months-1
break;
case 3:
if (chkLeapYr(time[2][0])) // leap year
{
time[2][2] = 29+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
else // not leap year = common year
{
time[2][2] = 28+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
break;
case 5:
case 7:
case 10:
case 12:
time[2][2] = 30+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
break;
}
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/31+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/31+1)*31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/30+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/30+1)*30; // days
}
break;
case 2:
if (chkLeapYr(time[2][0])) // leap year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/29+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/29+1)*29; // days
}
}
else // common year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/28+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/28+1)*28; // days
}
}
break;
}
if (time[2][1]<0) // months
{
time[2][0] = time[2][0]-(Math.abs(time[2][1])/12+1);
time[2][1] = time[2][1]+(Math.abs(time[2][1])/12+1)*12;
}
break;
case "D":
System.out.print(" Decrease days by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid days. It should be more than 0. Reenter hours: ");
temp = input.nextInt();
time[2][2] = time[2][2]-temp;
} else time[2][2] = time[2][2]-temp;
switch(time[2][1]) // month
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (time[2][2]==0)
{
switch(time[2][1])
{
case 1:
case 8:
time[2][2] = 31+time[2][2]; // days
if (time[2][1]==1)
{
time[2][1]=12;
time[2][0]=--time[2][0];
}
else time[2][1] = --time[2][1]; // months-1
break;
case 3:
if (chkLeapYr(time[2][0])) // leap year
{
time[2][2] = 29+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
else // not leap year = common year
{
time[2][2] = 28+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
break;
case 5:
case 7:
case 10:
case 12:
time[2][2] = 30+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
break;
}
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/31+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/31+1)*31; // days
}
break;
case 4:
case 6:
case 9:
case 11:
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/30+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/30+1)*30; // days
}
break;
case 2:
if (chkLeapYr(time[2][0])) // leap year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/29+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/29+1)*29; // days
}
}
else // common year
{
if (time[2][2]==0)
{
time[2][2] = 31+time[2][2]; // days
time[2][1] = --time[2][1]; // months-1
}
if (time[2][2]<0)
{
time[2][1] = time[2][1]-(Math.abs(time[2][2])/28+1); // months
time[2][2] = time[2][2]+(Math.abs(time[2][2])/28+1)*28; // days
}
}
break;
}
if (time[2][1]<0) // months
{
time[2][0] = time[2][0]-(Math.abs(time[2][1])/12+1);
time[2][1] = time[2][1]+(Math.abs(time[2][1])/12+1)*12;
}
break;
case "M": // Months
System.out.print(" Decrease months by ");
temp = input.nextInt();
if (temp<0)
{
System.out.print("Invalid month. It should be between 1 and 12. Reenter months: ");
temp = input.nextInt();
time[2][1] = time[2][1]-temp;
} else time[2][1] = time[2][1]-temp;
if (time[2][1]<0) // months
{
time[2][0] = time[2][0]-(Math.abs(time[2][1])/12+1);
time[2][1] = time[2][1]+(Math.abs(time[2][1])/12+1)*12;
}
break;
case "Y": // Years
System.out.print(" Decrease years by ");
temp = input.nextInt();
if (temp<0 | temp>9999)
{
System.out.println("Invalid year. It should be between 1 and 9999. Reenter years: ");
temp = input.nextInt();
time[2][0] = time[2][0]-temp;
} else time[2][0] = time[2][0]-temp;
break;
default: System.out.println("Invalid date or time!");
}
}
}
public class Timeside
{
public static void main(String[] args)
{
String str = new String("");
String yes="y", no="n"; // yes
String str0="Y", str1="M", str2="D", str3="h", str4="m", str5="s";
MyTime dat = new MyTime(0);
dat.enterDate();
dat.enterTime();
System.out.println();
System.out.print("Input Date & Time: ");
dat.displayMilTime(dat.time[0][1],dat.time[0][2],dat.time[0][0],dat.time[0][3],dat.time[0][4],dat.time[0][5]);
System.out.println();
System.out.print("Reference Date & Time: ");
dat.displayStdTime(dat.time[0][1],dat.time[0][2],dat.time[0][0],dat.time[0][3],dat.time[0][4],dat.time[0][5]);
System.out.println();
System.out.println("By default: Increment 1 second");
dat.increaseTime("1s");
System.out.print("Increment Date & Time: ");
dat.displayMilTime(dat.time[1][1],dat.time[1][2],dat.time[1][0],dat.time[1][3],dat.time[1][4],dat.time[1][5]);
System.out.println();
System.out.println("By default: Decrement 1 second");
dat.decreaseTime("1s");
System.out.print("Decement Date & Time: ");
dat.displayMilTime(dat.time[2][1],dat.time[2][2],dat.time[2][0],dat.time[2][3],dat.time[2][4],dat.time[2][5]);
System.out.println();
System.out.println("Info: You can INCREASE or DECREASE Date and/or Time.");
System.out.println();
System.out.print("Do you want to INCREASE date and time? 'y' for Yes or 'n' for No: ");
str = dat.input.next();
if (str.equals(yes))
{
//System.out.println("Please select either 'Y' for years, 'M' for months, or 'D' for days");
//System.out.println(" and either 'h' for hours, 'm' for minutes, or 's' for seconds");
//System.out.print(" Enter the selection for years: ");
//str = "Y";
//if (str.equals(str0))
dat.increaseTime("Y");
//System.out.print(" Enter the selection for months: ");
//str = dat.input.next();
//if (str.equals(str1))
dat.increaseTime("M");
//System.out.print(" Enter the selection for days: ");
//str = dat.input.next();
//if (str.equals(str2))
dat.increaseTime("D");
//System.out.print(" Enter the selection for hours: ");
//str = dat.input.next();
//if (str.equals(str3))
dat.increaseTime("h");
//System.out.print(" Enter the selection for minutes: ");
//str = dat.input.next();
//if (str.equals(str4))
dat.increaseTime("m");
//System.out.print(" Enter the selection for seconds: ");
//str = dat.input.next();
//if (str.equals(str5))
dat.increaseTime("s");
System.out.print("Increase Date & Time: ");
dat.displayMilTime(dat.time[1][1],dat.time[1][2],dat.time[1][0],dat.time[1][3],dat.time[1][4],dat.time[1][5]);
System.out.println();
}
else if (str.equals(no))
{
System.out.println(" Skip increasing date & time.");
System.out.println();
}
else
{
System.out.println(" Incorrect response of 'y' or 'n'!");
System.out.println();
}
System.out.print("Do you want to DECREASE date and time? 'y' for Yes or 'n' for No: ");
str = dat.input.next();
if (str.equals(yes))
{
//System.out.println("Please select either 'Y' for years, 'M' for months, or 'D' for days");
//System.out.println(" and either 'h' for hours, 'm' for minutes, or 's' for seconds");
//System.out.print(" Enter the selection for years: ");
//str = dat.input.next();
//if (str.equals(str0))
dat.decreaseTime("Y");
//System.out.print(" Enter the selection for months: ");
//str = dat.input.next();
//if (str.equals(str1))
dat.decreaseTime("M");
//System.out.print(" Enter the selection for days: ");
//str = dat.input.next();
//if (str.equals(str2))
dat.decreaseTime("D");
//System.out.print(" Enter the selection for hours: ");
//str = dat.input.next();
//if (str.equals(str3))
dat.decreaseTime("h");
//System.out.print(" Enter the selection for minutes: ");
//str = dat.input.next();
//if (str.equals(str4))
dat.decreaseTime("m");
//System.out.print(" Enter the selection for seconds: ");
//str = dat.input.next();
//if (str.equals(str5))
dat.decreaseTime("s");
System.out.print("Decrease Date & Time: ");
dat.displayMilTime(dat.time[2][1],dat.time[2][2],dat.time[2][0],dat.time[2][3],dat.time[2][4],dat.time[2][5]);
System.out.println();
}
else if (str.equals(no))
{
System.out.println(" Skip decreasing date & time.");
System.out.println();
}
else
{
System.out.println(" Incorrect response of 'y' or 'n'!");
System.out.println();
}
System.out.println("End of the progsm.");
}
}