社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103

全站通知:

帮助:解析函数/time

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
代码 说明 当前输出值
清除此页面缓存以更新结果)
Y 4位数表示的年。 2024
y 2位数表示的年。 24
L 1表示闰年(Leap year),0表示非闰年。 1
o[注 1] ISO-8601 规定的该周所属年份。[注 2] 2024[注 3]
  1. 需要 PHP 5.1.0 或更新版本和 MediaWiki rev:45208
  2. 一般与 Y 相同,除非 ISO 规定的周数(W)属于前一年或者后一年,则使用 ISO 规定的年份。
  3. 如果 注 1 的条件不满足,会显示字母 o
n 月份号,无前导零。 12
m 月份号,有前导零。 12
M 月份名称缩写,使用网站语言。(英文结果为 Dec 12月
F 月份名称全称,使用网站语言。(英文结果为 December 12月
xg 月份名称全称,使用网站语言的属格(Genitive)形式,注意区分其与主格(Nominative)形式的区别。

这项功能在斯拉夫语族(Slavic languages)中十分重要,如波兰语、俄语、白俄罗斯语、捷克语、斯洛伐克语、斯洛文尼亚语、乌克兰语等。

在中文环境下:
属格为全汉字月份名称;
主格为数字+汉字月份名称。

对于中文:

(主格)

{{#time:Y F d|20 June 2010|zh}}

2010 6月 20

(属格)

{{#time:Y xg d|20 June 2010|zh}}

2010 6月 20

W ISO 8601 规定的周数,有前导零。 51
j 月份内的日期号,无前导零。 21
d 月份内的日期号,有前导零。 21
z 年份内的日期号 (1月1日 = 0)。
注意:要获得 ISO 规定的日期号,需加上1。
355
D 星期的缩写。国际上不通用。
l 星期的全称。国际上不通用。 星期六
N ISO 8601 规定的星期编号(星期一 = 1,星期日 = 7)。 6
w 星期编号(星期日 = 0,星期六 = 6)。 6
a 早上为 am(00:00:00 → 11:59:59);
其他时间为 pm(12:00:00 → 23:59:59)。
pm
A 上方 a 的大写形式。 PM
g 12小时制的时,无前导零。 12
h 12小时制的时,有前导零。 12
G 24小时制的时,无前导零。 12
H 24小时制的时,有前导零。 12
分 和 秒
i 小时后的分钟数,有前导零。 39
s 分钟后的秒钟数,有前导零。 28
U UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 1734784768
时区(需 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-12-21T12:39:28+00:00
r RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000,其中星期名和月份名国际上不通用。 Sat, 21 Dec 2024 12:39:28 +0000
非公历日历
伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar)
xmj 月份内的日期号。 19
xmF 月份名称全称。 主马达·阿色尼月
xmn 月份号。 6
xmY 全长表示的年。 1446
伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar)
xij 月份内的日期号。 1
xiF 月份名称全称。 Dey
xin 月份号。 10
xiY 全长表示的年。 1403
xiy 2位数表示的年。 03
希伯来历(Hebrew calendar
xjj 月份内的日期号。 20
xjF 月份名称全称。 基斯流月
xjt 当前月份的天数。 30
xjx 属格形式的月份名称。 Kislev
xjn 月份号。 3
xjY 全长表示的年。 5785
泰国历(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: 格式字串|日期/时间对象|语言代码}}
在右边的表格中列出了支持的格式控制代码。'格式字串'中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
还有两种方法可以使'格式字串'内的字符原样输出:
  1. 反斜杠\后加字符,可以原样输出单个字母:
  2. 一对半角双引号" "内的字符被当作文字,会原样输出,不带双引号。
另外,还可以用xx来输出单个字母x
例子
{{#time:\m}}
m
{{#time:\xg}}
x12x被原样输出,g被当作格式控制代码)
{{#time: Y-m-d}}
2024-12-21
{{#time:
[[Y]]
m d}}
2024 12 21
{{#time:
[[Y (year)]]
}}
2024 (24UTCpmSat, 21 Dec 2024 12:39:28 +0000) (year被当作格式控制代码year
{{#time:
[[Y "(year)"]]
}}
2024 (year)
{{#time: i's"}}
39'28"
'日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如20 December 2000)和相对时间(如+20 hours):
{{#time: r|now}}
Sat, 21 Dec 2024 12:39:28 +0000
{{#time: r|+2 hours}}
Sat, 21 Dec 2024 14:39:28 +0000
{{#time: r|now + 2 hours}}
Sat, 21 Dec 2024 14:39:28 +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}}
1734784768
{{#time: r|@1485582296}}
Sat, 28 Jan 2017 05:44:56 +0000
注意:可接受的输入时间范围0111年1月1日9999年12月31日。100年到110年的各个格式控制代码的输出不一致:YL按照100-110年来计算;但rDlU是按照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中星期输出为Unknownl的输出为<>,且这几年的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 12 21 00:00:00 (使用了一天的开始时刻,填补了当前年份内的日期号)
在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
{{#time: Y m d H:i:s|1959}}
1959 12 21 00:00:00
6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
{{#time: Y m d H:i:s|195909}}
2024 12 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 11月
#time中'格式字串'的总长度限制为6000字符
关于时区
解析函数#time中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):
{{#time:g:i A|-4 hours}}
8:39 AM
但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
{{#time:g:i A|-4.5 hours}}
9:39 PM
可以将时差转换为分钟或者秒钟来解决这个问题:
{{#time:g:i A|-270 minutes}}
8:09 AM
{{#time:g:i A|-16200 seconds}}
8:09 AM
(上述方法由此函数开发者 Tim Starling 提供)