<< Oracle Sues Google Over Android | Home | The Wonderful World Of Amazon Spam (Part 6) >>

Friday Java Quiz: Know Your Calendars And Dates

Once again, a late night Friday (Fri Aug 27 23:53:11 CDT 2010) Java quiz. This one arise out of work with Brian Coyner.

Q: Will the following Java program compile? Run without exceptions? If so, what does it print?

import java.util.Calendar; 
import java.util.Date; 
 
public class Main { 
    public static void main(String[] args) { 
        Date date = new Date(); 
        Date date2 = foo(date); 
        Date date3 = bar(date); 
        System.out.println("date2.getTime() == date3.getTime() = " + 
                (date2.getTime() == date3.getTime())); 
    } 
 
    private static Date foo(Date date) { 
        Calendar cal = Calendar.getInstance(); 
        cal.setTime(date); 
        cal.clear(Calendar.YEAR); 
        cal.clear(Calendar.MONTH); 
        cal.clear(Calendar.DATE); 
        cal.clear(Calendar.MILLISECOND); 
        return cal.getTime(); 
    } 
 
    private static Date bar(Date date) { 
        Calendar cal = Calendar.getInstance(); 
        cal.setTime(date); 
        Calendar cal2 = Calendar.getInstance(); 
        cal2.clear(); 
        cal2.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)); 
        cal2.set(Calendar.MINUTE, cal.get(Calendar.MINUTE)); 
        cal2.set(Calendar.SECOND, cal.get(Calendar.SECOND)); 
        return cal2.getTime(); 
    } 
}

Lenient rules apply today: You are allowed to consult the JDK Javadocs and Google the internet. You are allowed to study the source code that comes with the JDK. However you do need to give your answer before you attempt to actually compile and run the program.




Add a comment Send a TrackBack