Saturday, 20 August 2016

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

**6.33 (Current date and time) Invoking System.currentTimeMillis() returns the elapsed time in milliseconds since midnight of January 1, 1970. Write a program that displays the date and time. Here is a sample run: Current date and time is May 16, 2012 10:34:23

public class ProgrammingExercise6_33 {
 
 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  getMonthName(month) + numberOfDays+ ",";
 
 }
 
 /** 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;
   }
 
}

No comments :

Post a Comment