Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

Calculating Java dates

Take the time to learn how to create and use dates

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
To keep track of time, Java counts the number of milliseconds from the start of January 1, 1970. This means, for example, that January 2, 1970, began 86,400,000 milliseconds later. Similarly, December 31, 1969, began 86,400,000 milliseconds before January 1, 1970. The Java Date class keeps track of those milliseconds as a long value. Because long is a signed number, dates can be expressed before and after the start of January 1, 1970. The largest positive and negative values expressible by the long primitive can generate dates forward and backward about 290,000,000 years, which suits most people's schedules.

The Date class

The Date class, found in the java.util package, encapsulates a long value representing a specific moment in time. One useful constructor is Date(), which creates a Date object representing the time the object was created. The getTime() method returns the long value of a Date object. In the program below, I use the Date() constructor to create a date based on when the program was run, and the getTime() method to find out the number of milliseconds that the date represents:

 
import java.util.*;
public class Now {
   public static void main(String[] args) {
      Date now = new Date();
      long nowLong = now.getTime();
      System.out.println("Value is " + nowLong);
   }
}


When I ran that program, it gave me a value of 972,568,255,150. A quick check with my calculator confirms this number is at least in the correct ballpark: it's a bit less than 31 years, which corresponds to the right number of years between January 1, 1970, and the day I wrote this article. While computers may thrive on numbers like the foregoing value, most people are reluctant to say such things as "I'll see you on 996,321,998,346." Fortunately, Java provides a way to convert Date objects to Strings, which represent dates in more traditional ways. The DateFormat class, discussed in the next section, can create Strings with alacrity.

The DateFormat class

One purpose of the DateFormat class is to create Strings in ways that humans can easily deal with them. However, because of language differences, not all people want to see a date in exactly the same way. Someone in France may prefer to see "25 decembre 2000," while someone in the United States may be more accustomed to seeing "December 25, 2000." So when an instance of a DateFormat class is created, the object contains information concerning the particular format in which the date is to be displayed. To use the default format of the user's computer, you can apply the getDateInstance method in the following way to create the appropriate DateFormat object:
 
DateFormat df = DateFormat.getDateInstance();   


The DateFormat class is found in the java.text package.

Converting to a String

You can convert a Date object to a string with the format method. This is shown in the following demonstration program:

 
import java.util.*;
import java.text.*;
public class NowString {
   public static void main(String[] args) {
      Date now = new Date();
      DateFormat df = DateFormat.getDateInstance();
      String s = df.format(now);
      System.out.println("Today is " + s);
   }
}  


The getDateInstance method shown in the code above, with no arguments, creates an object in the default format or style. Java also provides some alternative styles for dates, which you can obtain through the overloaded getDateInstance(int style). For convenience' sake, DateFormat provides some ready-made constants that you can use as arguments in the getDateInstance method. Some examples are SHORT, MEDIUM, LONG, and FULL, which are demonstrated in the program below:

  • Digg
  • Reddit
  • SlashDot
  • Stumble
  • del.icio.us
  • Technorati
  • dzone
Comments (13)
Login
Forgot your account info?

dis article of urs brought smile on ma face...By Anonymous on March 10, 2010, 5:21 amdis article of urs brought smile on ma face..........d smile of satisfaction ......... a satisfaction one gets wen one find a sol 2 to a topic for which he have...

Reply | Read entire comment

ThanksBy Anonymous on February 21, 2010, 6:08 pmSoooo helpful! Thank you!!

Reply | Read entire comment

great manBy Anonymous on October 7, 2009, 11:51 amgreat man

Reply | Read entire comment

Very HelpfulBy Anonymous on October 7, 2009, 2:50 amThe article is so straight to the point and helpful

Reply | Read entire comment

greatBy Anonymous on September 3, 2009, 1:58 amtoday thanks to your group sir.

Reply | Read entire comment

View all comments

Add comment
Anonymous comments subject to approval. Register here for member benefits.
Have a JavaWorld account? Log in here. Register now for a free account.
Resources