Fair Warning: Future versions may introduce substantive changes--especially in order to support leap seconds. This is the principal reason Chronos is still in Beta. Also, there have been some significant API changes since Chronos first became publicly available in July 2005. However, the API defined by the ANSI-Smalltalk Standard has not changed--nor will it.
Instances of Chronos' Timepoint, YearMonthDay, TimeOfDay, ScientificDuration and ChronosTimezone classes can all be converted into their native equivalents by sending the message #asNative to the instance. Instances of the native date/time classes can be converted into their Chronos equivalents by sending the message #asChronosValue to the instance.
A Chronos Timepoint may be either invariant to Universal Time (same semantics as a java.util.Date--as required by the ANSI Smalltalk Standard) or invariant to nominal time (same semantics as a VisualWorks Timestamp.) A Timepoint that is invariant to Universal Time uses its value in Universal Time as its invariant, and compares as equal to all others whose value in Universal Time is the same. A Timepoint that is invariant to nominal time uses its nominal ("local") time as its invariant, and compares as equal to all others having the same nominal ("local") time. When the two types of time-invariance are mixed in the same expression, nominal-time-invariant semantics takes precedence. Universal-Time invariance is the default.