社区文档构建中,欢迎编辑。 社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544
帮助:解析函数/time
Time是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
- 参考官方文档和其他文档完善内容
- 增加实际用例和技巧
- 说人话
代码 | 说明 | 当前输出值 (清除此页面缓存以更新结果) |
---|---|---|
年 | ||
Y
|
4位数表示的年。 | 2024 |
y
|
2位数表示的年。 | 24 |
L
|
1表示闰年(Leap year),0表示非闰年。 | 1 |
o [注 1]
|
ISO-8601 规定的该周所属年份。[注 2] | 2024[注 3] |
月 | ||
n
|
月份号,无前导零。 | 5 |
m
|
月份号,有前导零。 | 05 |
M
|
月份名称缩写,使用网站语言。(英文结果为 May )
|
5月 |
F
|
月份名称全称,使用网站语言。(英文结果为 May )
|
5月 |
xg
|
月份名称全称,使用网站语言的属格(Genitive)形式,注意区分其与主格(Nominative)形式的区别。 这项功能在斯拉夫语族(Slavic languages)中十分重要,如波兰语、俄语、白俄罗斯语、捷克语、斯洛伐克语、斯洛文尼亚语、乌克兰语等。 在中文环境下: |
对于中文:
(主格) (属格) |
周 | ||
W
|
ISO 8601 规定的周数,有前导零。 | 21 |
日 | ||
j
|
月份内的日期号,无前导零。 | 21 |
d
|
月份内的日期号,有前导零。 | 21 |
z
|
年份内的日期号 (1月1日 = 0)。 注意:要获得 ISO 规定的日期号,需加上1。 |
141 |
D
|
星期的缩写。国际上不通用。 | 二 |
l
|
星期的全称。国际上不通用。 | 星期二 |
N
|
ISO 8601 规定的星期编号(星期一 = 1,星期日 = 7)。 | 2 |
w
|
星期编号(星期日 = 0,星期六 = 6)。 | 2 |
时 | ||
a
|
早上为 am (00:00:00 → 11:59:59);其他时间为 pm (12:00:00 → 23:59:59)。
|
pm |
A
|
上方 a 的大写形式。
|
PM |
g
|
12小时制的时,无前导零。 | 11 |
h
|
12小时制的时,有前导零。 | 11 |
G
|
24小时制的时,无前导零。 | 23 |
H
|
24小时制的时,有前导零。 | 23 |
分 和 秒 | ||
i
|
小时后的分钟数,有前导零。 | 51 |
s
|
分钟后的秒钟数,有前导零。 | 51 |
U
|
UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 | 1716335511 |
时区(需 MediaWiki 1.22wmf2) | ||
e
|
时区标识符。 | UTC |
I
|
当前日期是否使用日光节约时间(夏令时)。 | 0 |
O
|
与格林尼治时间(GMT)的时差。 | +0000 |
P
|
与格林尼治时间(GMT)的时差,带有冒号分隔。 | +00:00 |
T
|
时区缩写。 | UTC |
Z
|
以秒计的时差。 | 0 |
杂项 | ||
t
|
当前月份的天数。 | 31 |
c
|
ISO 8601 格式的日期,等价于 Y-m-d"T"H:i:s+00:00 。
|
2024-05-21T23:51:51+00:00 |
r
|
RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000 ,其中星期名和月份名国际上不通用。
|
Tue, 21 May 2024 23:51:51 +0000 |
非公历日历 | ||
伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar) | ||
xmj
|
月份内的日期号。 | 13 |
xmF
|
月份名称全称。 | 都尔喀尔德月 |
xmn
|
月份号。 | 11 |
xmY
|
全长表示的年。 | 1445 |
伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar) | ||
xij
|
月份内的日期号。 | 1 |
xiF
|
月份名称全称。 | Khordad |
xin
|
月份号。 | 3 |
xiY
|
全长表示的年。 | 1403 |
xiy
|
2位数表示的年。 | 03 |
希伯来历(Hebrew calendar) | ||
xjj
|
月份内的日期号。 | 13 |
xjF
|
月份名称全称。 | 以珥月 |
xjt
|
当前月份的天数。 | 29 |
xjx
|
属格形式的月份名称。 | Iyar |
xjn
|
月份号。 | 8 |
xjY
|
全长表示的年。 | 5784 |
泰国历(Thai solar calendar) | ||
xkY
|
泰国历的全长表示的年。 注意:公历1941年前的年份,1月到3月的范围内,计算得到的泰国历年份不正确。(原因) |
2567 |
民国纪年(Minguo calender) 朝鲜历(North Korean calendar),又称 主体历(Juche calendar) | ||
xoY
|
全长表示的年。 | 113 |
日本年号(Japanese era name, or Japanese nengo) | ||
xtY
|
全长表示的年(带有年号)。 | 令和6 |
转换标志 | ||
xn
|
将下一个数字代码转换为原始 ASCII 格式数字。 | 在印地语中,{{#time:H, xnH}} 得到的是 ०६, 06 。
|
xN
|
与 xn 功能类似。但它持续起作用到字串末尾,或字串中的下一个 xN 处。
| |
xr
|
将下一个数字代码转换为罗马数字格式。仅对 10,000 以内的数字有效 (MediaWiki 1.20 之前,仅对 3,000 以内的数字有效)。 |
{{#time:xrY}} → MMXXIV
|
xh
|
将下一个数字代码转换为希伯来数字格式。 | {{#time:xhY}} → ב'כ"ד
|
将日期和/或时间(公历)按格式字串规定的格式进行转换。
可自行指定日期/时间对象,默认使用魔术字(Magic word){{CURRENTTIMESTAMP}}
的值(该值使用世界协调时间,UTC),也就是页面最近一次渲染为HTML的时间。
出自扩展ParserFunctions
- 格式
{{#time: 格式字串 }}
{{#time: 格式字串 | 日期/时间对象 }}
{{#time: 格式字串 | 日期/时间对象 | 语言代码 }}
- 在右边的表格中列出了支持的格式控制代码。'格式字串'中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
- 还有两种方法可以使'格式字串'内的字符原样输出:
- 反斜杠
\
后加字符,可以原样输出单个字母: - 一对半角双引号
" "
内的字符被当作文字,会原样输出,不带双引号。
- 反斜杠
- 另外,还可以用
xx
来输出单个字母x
。 - 例子
{{#time:\m}}
→m
{{#time:\xg}}
→x11
(x
被原样输出,g
被当作格式控制代码){{#time: Y-m-d }}
→2024-05-21
{{#time: [[Y]] m d }}
→2024 05 21
{{#time: [[Y (year)]] }}
→2024 (24UTCpmTue, 21 May 2024 23:51:51 +0000)
(year被当作格式控制代码y
、e
、a
、r
){{#time: [[Y "(year)"]] }}
→2024 (year)
{{#time: i's" }}
→51'51"
- '日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如
20 December 2000
)和相对时间(如+20 hours
):{{#time: r|now}}
→Tue, 21 May 2024 23:51:51 +0000
{{#time: r|+2 hours}}
→Wed, 22 May 2024 01:51:51 +0000
{{#time: r|now + 2 hours}}
→Wed, 22 May 2024 01:51:51 +0000
{{#time: r|20 December 2000}}
→Wed, 20 Dec 2000 00:00:00 +0000
{{#time: r|December 20, 2000}}
→Wed, 20 Dec 2000 00:00:00 +0000
{{#time: r|2000-12-20}}
→Wed, 20 Dec 2000 00:00:00 +0000
{{#time: r|2000 December 20}}
→错误:无效时间。
- '语言代码'使用的是ISO 639-3标准,可以显示所选语言的时间格式:
{{#time:d F Y|1988-02-28|nl}}
→28 februari 1988
{{#time:l|now|uk}}
→вівторок
{{#time:d xg Y|20 June 2010|pl}}
→20 czerwca 2010
- 译者注:以上三例本wiki内不起作用,因为不支持该语言。
- 如果需要在计算时使用UNIX时间,可以在UNIX时间前加上
@
:{{#time: U | now }}
→1716335512
{{#time: r|@1485582296}}
→Sat, 28 Jan 2017 05:44:56 +0000
- 注意:可接受的输入时间范围是0111年1月1日至9999年12月31日。100年到110年的各个格式控制代码的输出不一致:
Y
和L
按照100-110年来计算;但r
、D
、l
和U
是按照2000-2010年来计算的:{{#time: d F Y | 29 Feb 0100 }}
→01 3月 0100
- 上面的结果正确,但是:
{{#time: r | 29 Feb 0100 }}
→Mon, 01 Mar 0100 00:00:00 +0000
- 上面的结果错误,因为100年不是闰年,但2000年是闰年,上面的结果是按照2000年计算的。
- 超过9999年会得到不正确的结果:
{{#time: d F Y | 15 April 10000 }}
→错误:无效时间。
{{#time: r | 10000-4-15 }}
→Sat, 15 Apr 2000 10:00:00 +0000
- 0-99年被当作2000-2069年、1970-1999年来处理,除非使用4位数年格式来表示这些年份:
{{#time: d F Y | 1 Jan 6 }}
→01 1月 2006
{{#time: d F Y | 1 Jan 06 }}
→01 1月 2006
{{#time: d F Y | 1 Jan 006 }}
→01 1月 2006
{{#time: d F Y | 1 Jan 0006 }}
→01 1月 0006
(使用了4位数年)
星期名称支持100-110年和1753年以后的年份。111-1752年的r
中星期输出为Unknown
,l
的输出为<>
,且这几年的r
输出值不能当作有效的输入值。- 译者注:
- 测试了一些111-1752之间的年份,已经可以正常显示星期,且正确:
{{#time: r | 1 Jan 1600 }}
→Sat, 01 Jan 1600 00:00:00 +0000
(应为星期六){{#time: r | 23 Dec 802 }}
→Mon, 23 Dec 0802 00:00:00 +0000
(应为星期一)- 使用日期转换进行验证。
- 可以指定完整的绝对日期,或者是一部分,此函数会将缺少的部分用当前日期的值填补:
{{#time: Y | January 1 }}
→2024
- 注意:填补功能在不同情况下填补不同的内容:
{{#time: Y m d H:i:s | June }}
→2024 06 21 00:00:00
(使用了一天的开始时刻,填补了当前月份内的日期号、年份){{#time: Y m d H:i:s | 2003 }}
→2003 05 21 00:00:00
(使用了一天的开始时刻,填补了当前年份内的日期号)
- 在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
{{#time: Y m d H:i:s | 1959 }}
→1959 05 21 00:00:00
- 6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
{{#time: Y m d H:i:s | 195909 }}
→2024 05 21 19:59:09
(被当作时分秒而不是年月){{#time: Y m d H:i:s | 196009 }}
→错误:无效时间。
(即使19:60:09不是正确的时间,196009也不会被当作年月)
- 函数定量计算天数来得到日期:
{{#time: Y F d | January 0 2008 }}
→2007 12月 31
{{#time: F d | January 32 }}
→错误:无效时间。
(一个月超过31天的话,会报错){{#time: F d | February 29 2008 }}
→2月 29
{{#time: F d | February 29 2007 }}
→3月 01
{{#time:Y F|now -1 months}}
→2024 4月
#time
中'格式字串'的总长度限制为6000字符。- 关于时区
- 解析函数
#time
中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):{{#time:g:i A | -4 hours }}
→7:51 PM
- 但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
{{#time:g:i A | -4.5 hours }}
→8:51 AM
- 可以将时差转换为分钟或者秒钟来解决这个问题:
{{#time:g:i A | -270 minutes }}
→7:21 PM
{{#time:g:i A | -16200 seconds }}
→7:21 PM
- (上述方法由此函数开发者 Tim Starling 提供)