Ce package vise à remplacer java.util.Date et java.util.Calendar. Son
design est fortement inspiré par (directement copié, en fait) datetime de
Python ou de
Perl. Plus particulièrement:
les structures de données servant à représenter dates et heures sont immuables
Date, Time et DateTime sont des classes distinctes ("2010-09-01"
et "2010-09-01 00:00:00" ne sont pas la même chose)
des classes "delta" (DateDelta, TimeDelta et DateTimeDelta) pour
la représentation de durées de temps
les méthodes strptime and strftime
Par exemple:
Date d1 = new Date (1979, 5, 27);
Date d2 = new Date (1986, 8, 16);
// The objects implement Comparable, so can be sorted using the usual methods:
assert d1.compareTo(d2) < 0;
// strftime and strptime allow conversion to/from strings
assert d1.strftime("%Y-%m-%d").equals ("1979-05-27");
assert Date.strptime("1979-05-27", "%Y-%m-%d").equals(d1);
// The objects are immutable and have proper definitions of hashCode and
// equals, so they're safe to use as HashMap keys:
HashMap<Date,String> dateMap = new HashMap<Date,String>();
dateMap.put (d1, "d1");
dateMap.put (d2, "d2");
assert dateMap.get(d1) == "d1";
assert dateMap.get(d1) != "d2";
// "delta" objects simplify date arithmetic
DateDelta delta = d2.difference(d1);
asset d1.add(delta).equals (d2);
Cet exemple utilise seulement la classe Date, mais DateTime et Time
fonctionnent de manière similaire, comme on pourrait s'y attendre. Vous pouvez
trouver des tests un peu plus complets dans
DateTests.java.
Vous pouvez voir ce module à l'oeuvre p.e. dans le code source de FIP.