La gestion et la manipulation des dates et heures s'effectuent par l'intermédiaire de diverses classes présentes dans le paquetage java.util.

La classe Date existant depuis la version JDK 1.0, possède de nombreuses méthodes obsolètes. Actuellement, la classe Date ne sert plus qu'à fournir une instance temporelle avec une précision en millisecondes. L'objet représente la date et l'heure actuelles ou un instant déterminé par un certain nombre de millisecondes écoulées depuis le jeudi 1er janvier 1970 à minuit GMT.

Date date_heure_actuelles = new Date();
//Affiche : Sat Sep 17 15:29:04 CEST 2005
System.out.println(date_heure_actuelles.toString());

Date date_heure = new Date(64256L);
System.out.println(date_heure.toString());
//Affiche : Thu Jan 01 01:01:04 CET 1970

Date date_heure_zero = new Date(0L);
System.out.println(date_heure_zero.toString());
//Affiche : Thu Jan 01 01:00:00 CET 1970

De telles représentations de date ne sont guère intelligibles, c'est pourquoi, l'API Java met à la disposition des programmeurs deux classes de formatage de date. Les classes DateFormat et SimpleDateFormat permettent d'obtenir la représentation d'une date et/ou d'une heure en fonction de paramètres locaux dépendant du fuseau horaire et du pays, ou de paramètres personnelles.

La classe Date quasiment désuète, passe la main aux classes Calendar ou GregorianCalendar pour gérer et manipuler plus efficacement les dates et les heures. Outre la récupération des champs d'une date et d'une heure, ces classes peuvent effectuer des calculs simples (addition ou soustraction) sur des champs précis représentant entre autres l'année, le mois, le jour, l'heure, les minutes et les secondes.