社区文档构建进行中,欢迎编辑。社区答疑群(非官方):717421103,点点小课堂(腾讯会议):5696651544

全站通知:

帮助:解析函数/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 月份号,无前导零。 9
m 月份号,有前导零。 09
M 月份名称缩写,使用网站语言。(英文结果为 Sep 9月
F 月份名称全称,使用网站语言。(英文结果为 September 9月
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 规定的周数,有前导零。 39
j 月份内的日期号,无前导零。 24
d 月份内的日期号,有前导零。 24
z 年份内的日期号 (1月1日 = 0)。
注意:要获得 ISO 规定的日期号,需加上1。
267
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小时制的时,无前导零。 7
h 12小时制的时,有前导零。 07
G 24小时制的时,无前导零。 19
H 24小时制的时,有前导零。 19
分 和 秒
i 小时后的分钟数,有前导零。 05
s 分钟后的秒钟数,有前导零。 32
U UNIX时间(Unix time)。从格林尼治时间(GMT)1970年1月1日00:00:00开始计的秒钟数。 1727204732
时区(需 MediaWiki 1.22wmf2
e 时区标识符。 UTC
I 当前日期是否使用日光节约时间(夏令时)。 0
O 与格林尼治时间(GMT)的时差。 +0000
P 与格林尼治时间(GMT)的时差,带有冒号分隔。 +00:00
T 时区缩写。 UTC
Z 以秒计的时差。 0
杂项
t 当前月份的天数。 30
c ISO 8601 格式的日期,等价于 Y-m-d"T"H:i:s+00:00 2024-09-24T19:05:32+00:00
r RFC 5322 格式的日期,等价于 D, j M Y H:i:s +0000,其中星期名和月份名国际上不通用。 Tue, 24 Sep 2024 19:05:32 +0000
非公历日历
伊斯兰历(Islamic calendar),又称 希吉来历(Hijri calendar)
xmj 月份内的日期号。 20
xmF 月份名称全称。 赖比尔·敖外鲁月
xmn 月份号。 3
xmY 全长表示的年。 1446
伊朗历(Iranian calendar),又称 贾拉利历(Jalali calendar)
xij 月份内的日期号。 3
xiF 月份名称全称。 Mehr
xin 月份号。 7
xiY 全长表示的年。 1403
xiy 2位数表示的年。 03
希伯来历(Hebrew calendar
xjj 月份内的日期号。 21
xjF 月份名称全称。 以禄月
xjt 当前月份的天数。 29
xjx 属格形式的月份名称。 Elul
xjn 月份号。 12
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: 格式字串|日期/时间对象|语言代码}}
在右边的表格中列出了支持的格式控制代码。'格式字串'中的任何不被识别的字符将原样输出,包括空格(系统不用它们来编译代码)。
还有两种方法可以使'格式字串'内的字符原样输出:
  1. 反斜杠\后加字符,可以原样输出单个字母:
  2. 一对半角双引号" "内的字符被当作文字,会原样输出,不带双引号。
另外,还可以用xx来输出单个字母x
例子
{{#time:\m}}
m
{{#time:\xg}}
x7x被原样输出,g被当作格式控制代码)
{{#time: Y-m-d}}
2024-09-24
{{#time:
[[Y]]
m d}}
2024 09 24
{{#time:
[[Y (year)]]
}}
2024 (24UTCpmTue, 24 Sep 2024 19:05:32 +0000) (year被当作格式控制代码year
{{#time:
[[Y "(year)"]]
}}
2024 (year)
{{#time: i's"}}
05'32"
'日期/时间对象'可以使用任何PHP中strtotime()函数支持的格式。可以使用绝对时间(如20 December 2000)和相对时间(如+20 hours):
{{#time: r|now}}
Tue, 24 Sep 2024 19:05:32 +0000
{{#time: r|+2 hours}}
Tue, 24 Sep 2024 21:05:32 +0000
{{#time: r|now + 2 hours}}
Tue, 24 Sep 2024 21:05:32 +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}}
1727204732
{{#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 24 00:00:00 (使用了一天的开始时刻,填补了当前月份内的日期号、年份)
{{#time: Y m d H:i:s|2003}}
2003 09 24 00:00:00 (使用了一天的开始时刻,填补了当前年份内的日期号)
在MediaWiki r86805之后,4位数字一概会被认为是年份,而非小时与分钟:
{{#time: Y m d H:i:s|1959}}
1959 09 24 00:00:00
6位数字会被认为是小时、分钟和秒钟,如果得到的时间不正确,则会报错(一概不会当作年份和月份):
{{#time: Y m d H:i:s|195909}}
2024 09 24 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 8月
#time中'格式字串'的总长度限制为6000字符
关于时区
解析函数#time中有一个bug(更确切的说是PHP日期时间的bug),不允许传入非整数的相对时差。这个问题在整点时区不会出现,如东部夏令时间(EDT):
{{#time:g:i A|-4 hours}}
3:05 PM
但是,委内瑞拉(委内瑞拉标准时间,VET)与世界协调时间(UTC)的时差是-4.5小时,如果直接输入则不会得到正确的结果,如下:
{{#time:g:i A|-4.5 hours}}
4:05 AM
可以将时差转换为分钟或者秒钟来解决这个问题:
{{#time:g:i A|-270 minutes}}
2:35 PM
{{#time:g:i A|-16200 seconds}}
2:35 PM
(上述方法由此函数开发者 Tim Starling 提供)