## Saturday, 20 August 2016

### Chapter 6 Exercise 24, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

**6.24 (Display current date and time) Listing 2.7, ShowCurrentTime.java, displays the current time. Improve this example to display the current date and time. The calendar example in Listing 6.12, PrintCalendar.java, should give you some ideas on how to find the year, month, and day.
public class ProgrammingExercise6_24 {

public static void main(String[] args) {
// Obtain the total milliseconds since midnight, Jan 1, 1970
long totalMilliseconds = System.currentTimeMillis();

// Obtain the total seconds since midnight, Jan 1, 1970
long totalSeconds = totalMilliseconds / 1000;

// Compute the current second in the minute in the hour
long currentSecond = totalSeconds % 60;

// Obtain the total minutes
long totalMinutes = totalSeconds / 60;

// Compute the current minute in the hour
long currentMinute = totalMinutes % 60;

// Obtain the total hours
long totalHours = totalMinutes / 60;

// Compute the current hour
long currentHour = totalHours % 24;

// Display results
System.out.println("Current date and time is " + getDate(totalHours)
+ " " + currentHour + ":" + currentMinute + ":" + currentSecond
+ " GMT");

}

public static String getDate(long numberOfHour) {
String date;
// Compute number of days
long numberOfDay = numberOfHour / 24;
int startYear = 1970;
int dayReduction = 0;

while (numberOfDay > 0) {

if (isLeapYear(startYear)) {
dayReduction = 366;
numberOfDay -= 366;
} else {
dayReduction = 365;
numberOfDay -= 365;
}

startYear++;
}

// dial it back the year and the numberOfDay back one notch

numberOfDay += dayReduction;
startYear--;

return getMonthAndDay(numberOfDay, startYear) + "-" + startYear;
}

public static String getMonthAndDay(long numberOfDays, int year) {

int dayReduction = 0;
int month;
for (month = 1; month <= 12; month++) {
dayReduction = getNumberOfDaysInMonth(year, month);
numberOfDays -= dayReduction;

if (numberOfDays < 0)
break;
}

numberOfDays += dayReduction;

return numberOfDays + "-" + getMonthName(month);

}

/** Get the number of days in a month */
public static int getNumberOfDaysInMonth(int year, int month) {
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
|| month == 10 || month == 12)
return 31;

if (month == 4 || month == 6 || month == 9 || month == 11)
return 30;

if (month == 2)
return isLeapYear(year) ? 29 : 28;

return 0; // If month is incorrect
}

/** Determine if it is a leap year */
public static boolean isLeapYear(int year) {
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}

/** Get the English name for the month */
public static String getMonthName(int month) {
String monthName = "";
switch (month) {
case 1:
monthName = "January";
break;
case 2:
monthName = "February";
break;
case 3:
monthName = "March";
break;
case 4:
monthName = "April";
break;
case 5:
monthName = "May";
break;
case 6:
monthName = "June";
break;
case 7:
monthName = "July";
break;
case 8:
monthName = "August";
break;
case 9:
monthName = "September";
break;
case 10:
monthName = "October";
break;
case 11:
monthName = "November";
break;
case 12:
monthName = "December";
}

return monthName;
}

}