public class ClockRx {
int sec;
int min;
int hr;
int day;
int mon;
int yr;
public boolean isLeapYear( ) {
return yr % 400 == 0 || (yr % 100 != 0 && yr % 4 == 0);
}
public void tick( ) {
sec++;
if (sec == 60) {
sec = 0;
min++;
}
if (min == 60) {
min = 0;
hr++;
}
if (hr == 24) {
hr = 0;
day++;
}
switch (mon) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (day == 32) {
day = 1;
mon++;
}
break;
case 4:
case 6:
case 9:
case 11:
if (day == 31) {
day = 1;
mon++;
}
break;
case 2:
if ((isLeapYear( ) && day == 30) ||
(!isLeapYear( ) && day == 29)) {
day = 1;
mon++;
}
break;
default:
System.out.println("Illegal month.");
}
}
public String getMonthName( ) {
switch(mon) {
case 1: return "January";
case 2: return "February";
case 3: return "March";
case 4: return "April";
case 5: return "May";
case 6: return "June";
case 7: return "July";
case 8: return "August";
case 9: return "September";
case 10: return "October";
case 11: return "November";
case 12: return "December";
default: return "Illegal month";
}
/*
if (mon == 13) {
mon = 1;
// "year" has not been declared
// year++;
// "yr" has
yr++;
}
*/
}
public String toString( ) {
if (hr == 0)
return String.format("%s %d, %d 12:%02d:%02d AM",
getMonthName( ), day, yr, min, sec);
else if (hr < 12)
return String.format("%s %d, %d %02d:%02d:%02d AM",
getMonthName( ), day, yr, hr, min, sec);
else if (hr == 12)
return String.format("%s %d, %d 12:%02d:%02d PM",
getMonthName( ), day, yr, min, sec);
else if (hr > 12 && hr < 24)
return String.format("%s %d, %d %02d:%02d:%02d PM",
getMonthName( ), day, yr, hr % 12, min, sec);
else
return "Illegal month";
}
}