The SMW datatype Date is used for data values that represent points in time. It is able to support dates throughout human history in a unified format, and it offers internationalisation options for supporting more languages. All dates and times refer to the "local time" of the server (or the wiki). A wiki may define what timezone this refers to by common conventions. For export, times are given without timezone information. However, time offsets to that local time are supported.
Examples of typical input dates in English language are:
- Feb 11 2000 10:00:01 (complete date with time)
- Feb 11 2000 (just date)
- 2000 (just year)
- Feb 11 2000 10:00:01 PM (complete date with time, PM)
- Feb 11 2000 22:00:01 PM (complete date with 24h time)
- 2000-02-11T22:00:01 (ISO-style date)
- 2000 February 2 (varying order of inputs is supported)
- 2-3-2000 (preferred interpretation, month or day, sometimes depends on language settings)
- 2/3/2000 (various kinds of separators are recognized in all languages)
- Jan 1 300 BC (dates BC/before common era are supported)
- 14000000000 BC (estimated age of the universe)
Other languages may also support additional strings as month names, and they may choose different preferred interpretations of ambiguous dates. The basic format, however, is the same.
Dates are currently displayed in a simple format that cannot be modified or changed with the language setting. Month names in displayed dates are translated based on the current language (if translated names are available). User settings or other MediaWiki features are not taken into account for displaying dates, since MediaWiki's formatting extends only to a very restricted range of dates, typically between 1901-12-14 and 2038-1-19.
Display takes into account if parts of a date were omitted. So a date specified as "2008" will also be printed as "2008" everywhere, even though it might be interpreted as "Jan 1 2008 00:00:00" when comparing it to other dates.
Handling of incomplete dates
The implementation notices and stores whether parts of a date/time have been omitted (as in "2008" or "May 2007"). For all exporting and sorting purposes, incomplete dates are completed with defaults (usually using the earliest possible time, i.e. interpreting "2008" as "Jan 1 2008 00:00:00"). But the information on what was unspecified is kept internally for improving behaviour e.g. for outputs (defaults are not printed when querying for a value).
Only the minor parts of a date can be omitted: "May 2008" works, but "May 1" does not. This is so, since the latter could not be given a sensible default interpretation when sorting dates. To support sorting and querying, all dates must be interpretable as a concrete precise time point, and this is done internally when required, even for incomplete dates.
There is currently no support for different calendar models or conversion between them. All dates are supposed to refer to Gregorian calendar (or its extension to the past, the proleptic Gregorian calendar).
Attention: this may change in future versions, and historical dates may be treated as Julian calendar dates in certain ranges. Consider historical dates to be experimental.
Maximal date range
Type:Date is able to handle dates across history with full precision for storing, and substantial precision for sorting and querying. The range of supported past dates should encompass the Beginning of Time according to most of today's theories. The range of supported future dates is limited more strictly, but it does also allow year numbers in the order of 10^9.
BC, negative years, and the year 0
Years before common era (aka BC) can be denoted using "BC" in a date. It is assumed that there is no "year 0": the historic sequence of years was ..., 2 BC, 1 BC, 1 AD, 2AD, ... When given as an input, the year 0 (BC or not) is interpreted as 1 BC, but this use is discouraged.
The internal numeric date model used in SMW supports the year 0, and considers it to be the same as "1 BC". According to this convention, e.g., the year "-100" is the same as "101 BC". This convention agrees with ISO 6801 and the remarks in XML Schema Datatypes 2nd Edition (the latter uses a different convention that disallows year 0, but it explicitly endorses the ISO convention and announces the future use of this in XML). Note that the implementation currently does not support the specification of negative year numbers as input; negative numbers are only used internally.
Time offsets and timezones
Time offests are supported (e.g. "1 1 2008 12:00-2:00"). As explained above, those refer to the local time. Time offsets take leap years into account, e.g. the date "Feb 28 2004 23:00+2:00" is equivalent to "29 February 2004 01:00:00", while "Feb 28 1900 23:00+2:00" is equivalent to "1 March 1900 01:00:00".
- The customised date formatting of MediaWiki cannot be used due to its restriction to a rather short period of time.
- Internationalisation is incomplete: "BC", "AD", "PM", "AM" are fixed for all languages.
- Conversion between (historic) calendar models is not supported yet.
Type:Date en 1.4