Help:Date formatting and linking

The date formatting feature (autoformatting of dates), enabled by setting $wgUseDynamicDates to true, applies to linked dates in certain formats. It can cause link targets and/or the appearance to be different from what would follow from the general wikitext syntax. Also, the appearance depends on the preference setting for the date format. The latter also affects dates and times produced by the system in Recent Changes etc.

Wikitexts and user-dependent results
The following is rendered depending on preferences (putting a comma and/or a space between the links, or starting month names with a capital gives the same result):


 * month/day link target "January 5":
 * 2001-01-05 or 2001-01-05 (with leading zeros)
 * 2001january 5
 * 20015 january
 * january 52001
 * 5 january2001
 * january 5
 * 5 january
 * month/day link target "January 05":
 * 2001january 05
 * 200105 january
 * january 052001
 * 05 january2001
 * january 05
 * 05 january
 * month/day link target "Jan 5":
 * 2001jan 5
 * 20015 jan
 * jan 52001
 * 5 jan2001
 * jan 5
 * 5 jan
 * month/day link target "Jan 05":
 * 2001jan 05
 * 200105 jan
 * jan 052001
 * 05 jan2001
 * jan 05
 * 05 jan

With your current preference setting on this project this gives:


 * month/day link target "January 5":
 * 2001-01-05 (by default 2001-01-05, which is the result of each of the 5 full date formats with option ISO 8601)
 * 2001january 5 (by default 2001 January 5, which is the result of each of the 5 full date formats with option ymd)
 * 20015 january (by default 2001, 5 January, which cannot be set as preference)
 * january 52001 (by default January 5, 2001, which is the result of each of the 5 full date formats with option mdy)
 * 5 january2001 (by default 5 January 2001, which is the result of each of the 5 full date formats with option dmy)
 * january 5 (always January 5 except with option dmy)
 * 5 january (always 5 january except with option mdy)


 * month/day link target "January 05":
 * 2001january 05
 * 200105 january
 * january 052001
 * 05 january2001
 * january 05
 * 05 january
 * month/day link target "Jan 5":
 * 2001jan 5
 * 20015 jan
 * jan 52001
 * 5 jan2001
 * jan 5
 * 5 jan
 * month/day link target "Jan 05":
 * 2001jan 05
 * 200105 jan
 * jan 052001
 * 05 jan2001 (by default 05 Jan 2001, which is the result of each of the 4 full date formats in this section, with option dmy; it is the format for JavaScript sorting of a date column of a table)
 * jan 05
 * 05 jan

Link targets
The link targets are independent of the user-specified date format. The year has no leading zeros, e.g. "2007", "7", "7 BC". For the date 5 January 2001, apart from "2001", they are "January 5", "January 05", "Jan 5", or "Jan 05", depending on the wikitext. 2001-01-05 produces links to "2001" and "January 5". Although 2001-01-05 has the form of a single link, it produces the same two links.

Unlinked date
If the date needs not be linked, and the links that have to be created for autoformatting are even undesirable (because they clutter the page, or invite to create unneeded pages) the date cannot be autoformatted. See also the extension mentioned below to allow autoformatting anyway.

Link to date content other than required for autoformatting
If the links that have to be created for autoformatting do not include those with the desired target(s), we can choose between:
 * using a fixed date format (so the user-preferences do not apply), and provide a link as desired
 * apply autoformatting, but add the desired link at the end

Whether to link to a year page, a month page, or a day page, depends on factors such as whether a year page would get too large to hold all content about the year; if so, both a link to a summary year page and a detailed month page could be useful. Either way, it would be useful to link to the section concerned.

From some sites other than Wikipedia, if we want to link to general content about a year, month or day, we may want to link to Wikipedia instead of to an internal page.

Linking a date to date content is not only useful for accessing that content, but also for the backlink: to find pages linking to a particular year, month or day. This gives us a list of events (and subjects related to events) that happened in (or are at least related to) that time period. This also allows easy checking of completeness and consistency of the source and target page.

Examples of links:
 * 5 March 2007 (5 March 2007)
 * 5 March 2007 (5 March 2007)
 * 5 March 2007 (linking to the separate page about this date); backlinks of this type:
 * 5 March 2007 (linking to the section of the month page); backlinks of this type:

The day number in the anchor in w:Portal:Current events/DateHeader2, when below 10, has a leading zero. This avoids that asking for backlinks of 1 March also gives pages linking to 10 March etc.

In the case of linking to a separate page about a date this would require the leading zero in the page title, unless even in a link to such a page, we link to the anchor. For example, link 10 March 2007 causes a false result when we ask for backlinks of 1 March:. On the other hand, link 10 March 2007 causes no false result when we ask for backlinks of 1 March:

Usage of the links
If we do use the date formatting feature we get links to e.g. "2007", "7", "7 BC", so it is practical to use these pagenames, not e.g. "Year 2007", "0007", or "7 B.C.". If not we can create a redirect.

Also we get a link to "January 5", "January 05", "Jan 5", or "Jan 05", so if we want to create pages on days of the year it is practical to choose one of these four pagename formats, and not e.g. "5 January". Again, if such names are not desired we can use redirects. Also, if the content concerned is in a section of a page we can redirect to that section.

Anyway, links like simple:Special:Whatlinkshere/2007 and simple:Special:Whatlinkshere/January 5 can be used even if the link targets do not exist.

Appearances
Option "default": the appearance is as without the date formatting feature, except:
 * the wikitext 2001-01-05 gives the same appearance as 2001-01-05
 * if the day is in the center, a comma is put at the year side, if it is not there yet
 * if the day is not in the center, a possible comma is removed

Option "mdy": format m d, y or m d

Option "dmy": format d m y or d m

Option "ymd": format y m d or m d

Option "ISO 8601":
 * format y-m-d with numeric m, and m and d with leading zeros.
 * without year: appearance as without the date formatting feature

Years before 1000
For years in the range 1-999, in the case of month numbers the year has to be padded with zeros; the link target for the year has to leading zeros:
 * month/day link target "Januari 5":
 * 0011-01-05 or 0011-01-05
 * 11january 5
 * 115 january
 * january 511
 * 5 january11


 * january 99
 * january 100

With your current preference setting on this project this gives:


 * month/day link target "Januari 5":
 * 0011-01-05 or 0011-01-05
 * 11january 5
 * 115 january
 * january 511
 * 5 january11


 * january 99
 * january 100

Thus a number below 100 is treated as a date of the month.

For years B.C. we get link targets of the form "12 BC":
 * month/day link target "Januari 5":
 * -0011-01-05 or -0011-01-05
 * 12 BCjanuary 5
 * 12 BC5 january
 * january 512 BC
 * 5 january12 BC

With your current preference setting on this project this gives:


 * month/day link target "Januari 5":
 * -0011-01-05 or -0011-01-05
 * 12 BCjanuary 5
 * 12 BC5 january
 * january 512 BC
 * 5 january12 BC

User-dependent section title
If a section title contains a link in a format such that the date formatting feature applies, the section title is user-dependent. However, for section linking this would require a link target that is correspondingly user-dependent, which does not seem possible with the current software without some special extension. Therefore it is better not to use a real section but a special-font header in user-dependent format with an explicitly defined anchor in a fixed date format, see w:Portal:Current events/DateHeader2 (talk). One can use e.g. or the somewhat different datelink to link to it.

Sorting
For chronological table sorting the format YYYY-MM-DD works directly; in other cases date sorting only works if a table has been specially adapted for that purpose. An additional effect of selecting this preference is that Recent Changes, User Contributions, etc., also gives seconds: "HH:mm:SS", or with the date: "YYYY-MM-DDTHH:mm:SS".

Wikitext for which the date formatting feature does not apply
With a piped link the date formatting feature is disabled. In particular this can be used to link to "5 January", etc.


 * Piped link:
 * 5 January 2001
 * Numeric date format without leading zeros:
 * 2001-1-5
 * 2001-1-5
 * Numeric date format without year:
 * 01-05
 * Non-standard month name:
 * 2001 Janu 5
 * 2001 Janu 05
 * Janu 5, 2001
 * Janu 05, 2001
 * Janu 5 2001
 * Janu 05 2001
 * 5 Janu 2001
 * 05 Janu 2001
 * Janu 5
 * Janu 05
 * 5 Janu
 * 05 Janu

gives:


 * Piped link:
 * 5 January 2001
 * Numeric date format without leading zeros:
 * 2001-1-5
 * 2001-1-5
 * Numeric date format without year:
 * 01-05
 * Non-standard month name:
 * 2001 Janu 5
 * 2001 Janu 05
 * Janu 5, 2001
 * Janu 05, 2001
 * Janu 5 2001
 * Janu 05 2001
 * 5 Janu 2001
 * 05 Janu 2001
 * Janu 5
 * Janu 05
 * 5 Janu
 * 05 Janu

Unfortunately, when linking to content about a specific date (with a separate page, a section of a page, or another anchor) the date formatting feature cannot be used for the link label, so the label is fixed, not user-dependent.

When linking to another site (with an interwiki link or external link) the label cannot be user-dependent either.

Example:
 * 5 March 2007 gives 5 March 2007.

When pages describing events link like this to the dates they happened or will happen (with internal links, not interwiki links) we can find the events on a given date with e.g. w:Special:Whatlinkshere/Portal:Current_events/2007 March 5.

Date range
Attempts:
 * 14–26 November 2006
 * November 14–26 2006
 * November 14–November 26 2006
 * 14 November–26 November 2006
 * 14 November 2006–26 November 2006

Only the last, cumbersome, way does not give strange results in any user-specified date format. Since the date-formatting feature does not work well here one may choose not to use it in this case; that also gives the freedom to choose link targets exactly as desired, e.g.: or
 * 14–26 November 2006 giving 14–26 November 2006
 * 14–26 November 2006 giving 14–26 November 2006.

See also date ranges (discussion).

List of dates
With preference mdy, in a list of dates, grouping parts of dates to full dates may be ambiguous:

1 January 2001, 2 February 2002 gives 1 January 2001, 2 February 2002.


 * dmy: 1 January 2001, 2 February 2002
 * mdy: January 1, February 2, 2001, 2002
 * ymd: 2001 January 1, 2002 February 2
 * ISO 8601: 2001-01-01, 2002-02-02
 * no pref: 1 January 2001, 2 February 2002

January 1 2001, February 2 2002 gives January 1 2001, February 2 2002.


 * dmy: 1 January 2001, 2 February 2002
 * mdy: January 1, February 2, 2001, 2002
 * ymd: 2001 January 1, 2002 February 2
 * ISO 8601: 2001-01-01, 2002-02-02
 * no pref: January 1, 2001 February 2, 2002

Accessibility of date preference for branching
The date format cannot be detected with #ifeq, because the date format is converted after expansion of parser functions.