Design Goals Category Description Functions Interfaces Provide concrete classes for manipulation of dates and times date, time, date_duration, time_duration, date_period, time_period, etc support for infinity - positive infinity, negative infinity iterators over time and date ranges allow date and time implementations to be separate as much as possible Calculation Provide a basis for performing efficient time calculations days between dates durations of times durations of dates and times together Representation Flexibility Provide the maximum possible reusability and flexibility traits based customization of internal representations for size versus resolution control Allowing the use of different epochs and resolution (eg: seconds versus microseconds, dates starting at the year 2000 versus dates starting in 1700) Options for configuring unique calendar representations (Gregorian + others) the use of Julian Day number and the conversion between this and the Gregorian/Julian calendar date Allow for flexible adjustments including leap seconds Date Calculations Provide tools for date calculations provide basis for calculation of complex event specs like holidays calendar to calendar conversions provide for ability to extend to new calendar systems Time Calculations Provide concrete classes for manipulation of time provide the ability to handle cross time-zone issues provide adjustments for daylight savings time (summer time) Clock Interfaces Provide classes for retrieving time current time access to a network / high resolution time sources retrieving the current date time information to populate classes I/O Interfaces Provide input and output for time including multi-lingual support provide ISO8601 compliant time facet use I/O facets for different local behavior