# Template:Components

This template extracts numbers a, b, c from a string a-b-c, and a and b from a-b, and a from a. This can for example be applied to dates in the format y-m-d or d-m-y, months in the format y-m or m-y, and just years y, with a year range of ca. -1e14 to 1e14.

a-0-c gives the same results as a-c; also, not only 0-0-0 and 0-0 are not distinguished from each other, but also not from a single 0.

## Examples[edit]

`"{{components|2008-9-17|1}}"`

gives "2008" [1]`"{{components|2008-9-17|2}}"`

gives "9" [2]`"{{components|2008-9-17|3}}"`

gives "17" [3]

`"{{components|17-9-2008|1}}"`

gives "17" [4]`"{{components|17-9-2008|2}}"`

gives "9" [5]`"{{components|17-9-2008|3}}"`

gives "2008" [6]

`"{{components|2008-9|1}}"`

gives "2008" [7]`"{{components|2008-9|2}}"`

gives "9" [8]`"{{components|2008-9|3}}"`

gives "" [9]

`"{{components|2008|1}}"`

gives "2008" [10]`"{{components|2008|2}}"`

gives "" [11]`"{{components|2008|3}}"`

gives "" [12]

Compare:

`"{{#titleparts:9/17/2008|1|1|}}"`

gives "9" [13]`"{{#titleparts:9/17/2008|1|2|}}"`

gives "17" [14]`"{{#titleparts:9/17/2008|1|3|}}"`

gives "2008" [15]

`"{{#titleparts:9/17|1|1|}}"`

gives "9" [16]`"{{#titleparts:9/17|1|2|}}"`

gives "17" [17]`"{{#titleparts:9/17|1|3|}}"`

gives "" [18]

`"{{#titleparts:2008/9|1|1|}}"`

gives "2008" [19]`"{{#titleparts:2008/9|1|2|}}"`

gives "9" [20]`"{{#titleparts:2008/9|1|3|}}"`

gives "" [21]

`"{{#titleparts:2008|1|1|}}"`

gives "2008" [22]`"{{#titleparts:2008|1|2|}}"`

gives "" [23]`"{{#titleparts:2008|1|3|}}"`

gives "" [24]

## #time[edit]

Function `#time`

accepts dates like PHP's strtotime does. We consider here those with a dash. The examples show the resulting "y n d", which can be extracted separately too.

Full dates in the form d-m-y:

`{{#time:Y n j|17-9-2008}}`

→ 2008 9 17 [25]

Full and partial dates in the form y-m-d, y-m, and y:

`{{#time:Y n j|2008-9-17}}`

→ 2008 9 17 [26]`{{#time:Y n j|108-9-17}}`

→ 0108 9 17 [27]`{{#time:Y n j|2008-9}}`

→ 2008 9 1 [28] (current day of the month, not desired)`{{#time:Y n j|2008}}`

→ 2008 1 11 [29] (year interpreted as time, gives current full date, not desired)`{{#time:Y n j|1999}}`

→ 1999 1 11 [30] (current month and day of the month, not desired)

Thus `#time`

is suitable for full dates only, and from the year 100 only:

`{{#time:Y n j|28-9-17}}`

→ 2028 9 17 [31]

## Applying #time to the result[edit]

After applying this template to a string representing a partial or full date, it is known whether it is in the form of a full date (existing or not). If so, the function `#time`

can be usefully applied to check the existence of the date, to write it in a different format, and to find the weekday and the Gregorian serial day. If the year is outside the range that can be used by function `#time`

, a conversion can first be applied, as is done in Template:Gsd.

Example result:

- Wednesday 17 September 2008, gsd = 733302

## See also[edit]

The above documentation is transcluded from Template:Components/doc. (edit | history) Editors can experiment in this template's sandbox (create | mirror) and testcases (create) pages. Please add categories to the /doc subpage. Subpages of this template. |