Template:Dts
This template is used on approximately 37,000 pages and changes may be widely noticed. Test changes in the template's /sandbox or /testcases subpages, or in your own user subpage. Consider discussing changes on the talk page before implementing them. |
Please check that you do actually need this template before using it. Default date sorting does not work for spelled-out month–year or year–month combos and dates before the year 100, but it works in most other circumstances. For more information, see Help:Sorting § Date sorting problems. |
Notice | This template should not be used in citation templates such as Citation Style 1 and Citation Style 2, because it includes markup that will pollute the COinS metadata they produce; see Wikipedia:COinS. |
This template uses Lua: |
Dts (date time sorting) is used to correctly sort and display dates in a sortable table (see Help:Sorting).
Contents
What it solves[edit]
Dates in their customary formats, if simply treated as alphanumeric text strings, sort in nonsensical ways:
- 1 August 2013 sorts alphanumerically before 5 March 1967, because 1 is less than 5;
- February 5, 1922 sorts alphanumerically before January 3, 1922, because F comes before J.
Use of the YYYY-MM-DD format would solve this problem, but with minor exceptions that format is not used in articles (see WP:DATEFORMAT).
This template automatically attaches a "hidden key" to dates, causing them to sort correctly while still being displayed in one of the customary display formats such as February 5, 1922 or 5 Feb 1922.
Parameters[edit]
Dates[edit]
{{dts|year|month|day|BC}} | {{dts|date}} |
---|---|
|
|
input style | input code | hidden sort key | visible output | |
---|---|---|---|---|
{{dts|year}} | 1893}} | 1893 | ||
-89}} | 89 BC | |||
-10000}} | 10,000 BC | |||
{{dts|month}} | Oct}} | Oct | ||
{{dts|month year}} | February 1767}} | February 1767 | ||
{{dts|day month year}} | 12 Aug 1987}} | 12 Aug 1987 | ||
{{dts|month day, year}} | July 1, 1867}} | July 1, 1867 | ||
{{dts|day month}} | 25 October}} | 25 October | ||
{{dts|month day}} | Jan 1}} | Jan 1 | ||
{{dts|YYYY-MM-DD}} | 2014-12-09}} | December 9, 2014 | ||
{{dts|year|month}} | 1990|10}} | October 1990 | ||
1980|Dec}} | Dec 1980 | |||
1970|August}} | August 1970 | |||
{{dts|year|month|day}} | 2024|Jun|12}} | Jun 12, 2024 | ||
-204|11|22}} | November 22, 204 BC | |||
{{dts|year|month|day|era}} | 44|3|15|BC}} | March 15, 44 BC | ||
94|Oct|17|AD}} | Oct 17, 94 | |||
{{dts|month}} | {{dts |
May}} | May | |
{{dts|month|day}} | {{dts |
12}} | Sep 12 |
Formatting[edit]
Using format
produces a format that depends on, but is not necessarily equal to the format of the supplied date. The format
parameter can take nine values.
value | function | input code | hidden sort key | visible output |
---|---|---|---|---|
format depends on the input | 26 Jan 1788}} | 26 Jan 1788 | ||
March 12, 1557}} | March 12, 1557 | |||
1975-02-13}} | February 13, 1975 | |||
dmy |
displays the date in day-month-year format | Sep 13, 1888|format=dmy}} | 13 Sep 1888 | |
1983-01-03|format=dmy}} | 3 January 1983 | |||
dm |
displays only the day and month in day-month format | Feb 26, 1788|format=dm}} | 26 Feb | |
2020-10-15|format=dm}} | 15 October | |||
mdy |
displays the date in month-day-year format | August 31, 1901|format=mdy}} | August 31, 1901 | |
2006-11-08|format=mdy}} | November 8, 2006 | |||
md |
displays only the day and month in month-day format | 26 Jun 1988|format=md}} | Jun 26 | |
2002-02-27|format=md}} | February 27 | |||
my |
displays only the month and year in month-year format | 16 November 1488|format=my}} | November 1488 | |
d |
displays only the day | 6 July 1666|format=d}} | 6 | |
m |
displays only the month | 1980-02-12|format=m}} | February | |
y |
displays only the year | -26|Jan|18|format=y}} | 26 BC | |
hide |
hides the date | 15 October 1800|format=hide}} |
Abbreviation[edit]
There are two ways of abbreviating the month name.
- Directly input an abbreviated month name.
- Use the
abbr=on
parameter.
abbreviation method | input code | hidden sort key | visible output |
---|---|---|---|
none | 2000-01-01}} | January 1, 2000 | |
2000|1|1}} | January 1, 2000 | ||
1 January 2000}} | 1 January 2000 | ||
2000|January|1}} | January 1, 2000 | ||
abbreviated input | 1 Jan 2000}} | 1 Jan 2000 | |
2000|Jan|1}} | Jan 1, 2000 | ||
abbr=on |
1 January 2000|abbr=on}} | 1 Jan 2000 | |
2000|January|1|abbr=on}} | Jan 1, 2000 | ||
2000-01-01|abbr=on}} | Jan 1, 2000 | ||
2000|1|1|abbr=on}} | Jan 1, 2000 |
Additional sort key[edit]
In case two dates in a table are identical they may be ordered using the addkey
parameter.
input code | hidden sort key | visible output |
---|---|---|
2010-10-10|addkey=3}} | October 10, 2010 | |
2010-10-09}} | October 9, 2010 | |
2010-10-10|addkey=1}} | October 10, 2010 | |
2010-10-10}} | October 10, 2010 | |
2010-10-10|addkey=4}} | October 10, 2010 | |
2010-10-11}} | October 11, 2010 | |
2010-10-10|addkey=2}} | October 10, 2010 |
Wrapping[edit]
To turn off the suppression of word wraps, use the nowrap=off
parameter.
TemplateData[edit]
<templatedata> { "params": { "1": { "label": "Full date or year", "description": "Full date if second to fourth parameters are not specfied, otherwise year. Full date can be either in \"YYYY-MM-DD\", \"DD-MM-YYYY\", \"DD Month YYYY\", \"Month DD, YYYY\", \"YYYY-MM\", \"DD Month\", \"Month DD\", \"Month YYYY\" or \"Month\" format. Year is either a positive number or a negative number. If fourth parameter is not specified negative numbers are interpreted as years of BC era. Parameter is optional if the second parameter is specified.", "example": "\"1893\", \"-89\", \"-10000\", \"Oct\", \"February 1767\", \"12 Aug 1987\", \"July 1, 1867\", \"25 October\", \"Jan 1\", \"2014-12-09\"", "type": "string" }, "2": { "label": "Month", "description": "Full or abbreviated month name or alternatively, a month number which can be zero-padded. Parameter is optional if the third parameter is not specified.", "example": "February, Feb, 2 or 02", "type": "string" }, "3": { "label": "Day", "description": "Day, optionally zero-padded", "example": "7 or 07", "type": "number" }, "4": { "label": "Era", "description": "BC, AD, BCE or CE. Takes effect only if the first parameter is a postive number.", "type": "string" }, "format": { "label": "Format", "description": "Controls the output format. Can be \"dmy\", \"dm\", \"mdy\", \"md\", \"my\", \"d\", \"m\", \"y\" or \"hide\".", "type": "string" }, "abbr": { "label": "Abbreviation", "description": "Abbreviates the month name", "example": "on", "type": "string", "default": "off" }, "addkey": { "label": "Additional sort key", "description": "Adds another sort key to resolve conflicts between rows with the same date", "example": "3", "type": "number" }, "nowrap": { "label": "Wrapping", "description": "To turn off the suppression of word wraps, use the \"off\" parameter", "example": "off", "type": "string" } }, "description": "Dts is used to correctly sort and display dates in a sortable table." } </templatedata>
Notes[edit]
Sorting for incomplete dates[edit]
- Whole months or years
- A whole year or month (and year) is sorted according to its first day.
- Missing years
- If the year is not specified, the date will be sorted as if the year were the current year.
- Blank dates
- For no date input at all, the maximum possible sort key is used, so the entry will sort last.
Error handling[edit]
Entering an invalid date format will (generally) produce an error message such as the one below.
Error in Template:Dts: days must be an integer between 1 and 31
Errors are tracked in Category:Dts templates with errors.
Calendar choice[edit]
The template is not capable of distinguishing Julian and Gregorian calendar dates. Also, it is not capable of taking a date in one calendar as input and outputting a date in the other calendar. Thus, to insure proper sorting, editors must either use one calendar for all dates, or pick a specific changeover date (for example, deciding that 4 October 1582 is Julian and all later dates are Gregorian); this would be done on an article-by article basis. Editors are also responsible for explaining to the reader whether the visible dates are Julian or Gregorian, if there is any possibility of confusion.
Linking[edit]
The template formerly linked dates automatically, with link=off
used to suppress linking. In accordance with current guidelines linking of dates is no longer supported and instances of link=off
should be removed. Transclusions using the |link=
parameter are tracked in Category:Dts templates with deprecated parameters.
See also[edit]
- m:Template:dts (backlinks edit), since on Meta e.g. 09999 9999 induces numeric sort mode, "&" is prefixed to force string sort mode.
- {{sort}}, sorting by a specified key (also good for complicated numbers, e.g. scientific notation)
- {{sortname}}, full name sorting (using "last name, first name" as default sort key)
- {{tts}}, for sorting times in result tables of athletic events (only needed in certain cases - see template documentation)
- {{nts}}, for numbers