23 January 2025
Description
This template converts a date to one of the standard date formats used on the English Wikipedia. This template is probably best used internally in other templates.
If you want sortable dates for a table, use {{Dts}} or {{Date sortable}} instead.
Syntax
This template takes up to two parameters, both of which are optional:
{{date|
<date to be formatted>|<date formatting style>}}
- <date to be formatted> is an (optional) date to be formatted.
- If no date is specified, the template emits the current date.
For example, {{date}}produces 23 January 2025
.
- If a date is provided, but is not recognized as one, the text is just returned as is. Most dates will however be recognized as such, including all the formats typically used on Wikipedia. Numerous variations thereof are also supported, including abbreviated or lower case month names; genitive 'st', 'nd', 'rd', 'th'; extraneous white space; missing comma etc.
- Notes:
- Some dates are converted even if they are not real dates, and some dates are not converted even though they are real dates. Seeknown issues below.
- Only dates within the range 1 January 1000
and 31 December 9999
are supported. Dates with two digit dates will have unexpected results. Other dates outside the range 1000–9999 will be treated as if the second parameter were "none".
- <date formatting style> controls the date format in which the result is to be emitted.
- If no style is specified, the template emits a date in 'd month yyyy' format, as it appears (for example) on discussion pages.
- Recognized values for the second parameter are:
- none applies no formatting whatsoever
- dmy gives d mmmm yyyy (eg 23 January
). This is the default format.
- mdy gives mmmm d, yyyy (eg January 23
)
- ymd gives yyyy mmmm dd (eg January 23
)
- iso gives an ISO 8601 style yyyy-mm-dd (eg January 23
)
Examples
Input
|
Output
|
No format specified
|
{{date|2006-05-04}}
|
4 May 2006
|
{{date|May 4, 2006}}
|
4 May 2006
|
{{date|4 May 2006}}
|
4 May 2006
|
{{date|4 May}}
|
4 May
|
{{date|May 4}}
|
4 May
|
dmy format
|
{{date|2006-05-04|dmy}}
|
4 May 2006
|
{{date|May 4, 2006|dmy}}
|
4 May 2006
|
{{date|4 May 2006|dmy}}
|
4 May 2006
|
{{date|4 May|dmy}}
|
4 May
|
{{date|May 4|dmy}}
|
4 May
|
mdy format
|
{{date|2006-05-04|mdy}}
|
May 4, 2006
|
{{date|May 4, 2006|mdy}}
|
May 4, 2006
|
{{date|4 May 2006|mdy}}
|
May 4, 2006
|
{{date|4 May|mdy}}
|
May 4
|
{{date|May 4|mdy}}
|
May 4
|
ymd format
|
{{date|2006-05-04|ymd}}
|
2006 May 4
|
{{date|May 4, 2006|ymd}}
|
2006 May 4
|
{{date|4 May 2006|ymd}}
|
2006 May 4
|
{{date|4 May|ymd}}
|
May 4
|
{{date|May 4|ymd}}
|
May 4
|
iso format
|
{{date|2006-05-04|iso}}
|
2006-05-04
|
{{date|May 4, 2006|iso}}
|
2006-05-04
|
{{date|4 May 2006|iso}}
|
2006-05-04
|
{{date|4 May|iso}}
|
May 4
|
{{date|May 4|iso}}
|
May 4
|
none format
|
{{date|2006-05-04|none}}
|
2006-05-04
|
{{date|May 4, 2006|none}}
|
May 4, 2006
|
{{date|4 May 2006|none}}
|
4 May 2006
|
{{date|4 May|none}}
|
4 May
|
{{date|May 4|none}}
|
May 4
|
A wide variety of other input formats are handled correctly by the template:
Input
|
Output
|
{{date|1st December 2008}} (ordinal 'st')
|
1 December 2008
|
{{date|June 24 2006}} (missing comma)
|
24 June 2006
|
{{date|24 june 2006}} (lowercase month name)
|
24 June 2006
|
{{date|24 jun}} (abbreviated month name)
|
24 June
|
{{date|June 2006}}
|
June 2006
|
Input strings that the template cannot format are returned unaltered. This includes strings containing characters such as square brackets, so any links will result in unformatted output.
Input
|
Output
|
{{date|23007-031-24}}
|
23007-031-24
|
{{date|[[1 December]] [[2008]]|ymd}}
|
1 December 2008
|
{{date|1 December [[2008 in film|2008]]|mdy}}
|
1 December 2008
|
Known issues
- Out-of-range values are "fixed"
- The PHP library that this template ultimately depends on converts out-of-range values to the next-best in-range values. As a result, some date-like values that are not actually valid dates get converted anyway. These include...
.
Similarly, {{date|0 January 2006}}
becomes 31 December 2005
.
, since November has only 30 days.
Similarly, {{date|February 29, 2007}}
results in 1 March 2007
, since 2007 was not a leap year.
Note: Due to a parser peculiarity in the PHP library, 'December 32' and '32 December' are treated differently, and the latter results in an error (which causes this template to emit it unchanged), and only the former "overflows" into the next month.
- Non-Gregorian dates are treated as Gregorian
- The PHP library that this template ultimately depends on assumes that all dates, irrespective of context, are Gregorian calendar dates. Consequently,...
- some dates that would be valid in a non-Gregorian context are treated as out-of-range dates and converted to the next-best in-range values. For example,
{{date|30 February 1712}}
results in 1 March 1712
because – even though 30 February 1712 is a valid date in the Swedish calendar – February 1712 had only 29 days in the Gregorian calendar.
- ten dates are not reformatted. These are 29 February & 1 March of the years 1000, 1100, 1300, 1400, 1500. The cause of this is the same as that of the Swedish 30 February 1712.
- some dates that would not be valid in some contexts are converted normally. For example, 29 February 1912 or 1 February 1918 are not valid in a Russian context, but perfectly valid in the Gregorian one.
- ISO 8601 format not suitable for years before 1583
The ISO 8601 standard requires mutual agreement between those using the format to use years earlier than 1583. Since no agreement has been obtained from our readers, that format should not be used for such years, nor for any date not in the Gregorian calendar.
- Does not provide Microformats