模板:TimeZone/convert
跳到导航
跳到搜索
简介
这个模板会根据指定的日期和时区,换算出新时区下的日期,并按指定的格式输出wiki文本。
虽然没有硬性规定,但是建议在使用这个模板的页面的序章中添加{{TimeZone}}。
参数
- 使用格式:
参数全称
{{TimeZone/convert | year = <!-- 年 --> | mon = <!-- 月 --> | day = <!-- 日 --> | hour = <!-- 时 --> | min = <!-- 分 --> | sec = <!-- 秒 --> |o_timezone = <!-- 原来的时区 --> |c_timezone = <!-- 现在的时区 --> |<!-- 格式化字符串 --> }}
参数简写
{{TimeZone/convert | y = <!-- 年 --> | m = <!-- 月 --> | d = <!-- 日 --> | h = <!-- 时 --> | i = <!-- 分 --> | s = <!-- 秒 --> |o_tz = <!-- 原来的时区 --> |c_tz = <!-- 现在的时区 --> |<!-- 格式化字符串 --> }}
year
、y
:原时区下的年份,默认值为在原时区下当前时间的年份。mon
、m
:原时区下的月份,默认值为在原时区下当前时间的月份。day
、d
:原时区下的日期,默认值为在原时区下当前时间的日期。hour
、h
:原时区下的小时数,默认值为在原时区下当前时间的小时数。min
、i
:原时区下的分钟数,默认值为在原时区下当前时间的分钟数。sec
、s
:原时区下的秒数,默认值为在原时区下当前时间的秒数。o_timezone
、o_tz
:原来的时区,默认值为用户当前所在的时区。c_timezone
、c_tz
:现在的时区,默认值为用户当前所在的时区。{{{1}}}
:第一个匿名参数,指示如何格式化新日期。
原理
了解模板的实现原理有助于对模板的理解和运用。 以下说明了模板的实现以及工作原理:
- 在条目序言中添加{{TimeZone}},将会定义一个全局变量
{{#var:timezone}}
。{{#var:timezone}}
的值为使用{{TimeZone}}时指定的时间参数,若并未指定时间参数,则使用[[模块:TimeZone]]计算得到的用户当前时区。
- 计算原来的时区和现在的时区
- 计算
o_timezone
、o_tz
:- 若两个参数的值均为空,则使用[[模块:TimeZone]]计算得到的用户当前时区。
- 计算
c_timezone
、c_tz
:- 若两个参数的值均为空,则使用
{{#var:timezone}}
的值; - 若
{{#var:timezone}}
的值为空(【不建议】当未添加{{TimeZone}}的情况下),则使用[[模块:TimeZone]]计算得到的用户当前时区。
- 若两个参数的值均为空,则使用
- 计算
- 依次计算:
year
、y
:若两个参数的值均为空,则使用在原时区下当前时间的年份。mon
、m
:若两个参数的值均为空,则使用在原时区下当前时间的月份。day
、d
:若两个参数的值均为空,则使用在原时区下当前时间的日期。hour
、h
:若两个参数的值均为空,则使用在原时区下当前时间的小时数。min
、i
:若两个参数的值均为空,则使用在原时区下当前时间的分钟数。sec
、s
:若两个参数的值均为空,则使用在原时区下当前时间的秒数。
- 汇总所有参数,使用[[模块:TimeZone]]计算新日期,并根据
{{{1}}}
格式化新日期。- 所有格式化参数详见#格式化参数章节
- 返回结果。
格式化参数
目前{{TimeZone/convert}}共支持42个格式化参数:
示例时间:2024年10月31日 (星期四) 凌晨 03:54:47
格式化参数 | 说明 | 示例输出
|
---|---|---|
%(y) | 不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。 | 24 |
%y | 不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。%(y) 的简略写法。 |
24 |
%(yy) | 不包含纪元的年份。如果不包含纪元的年份小于10,则显示具有前导零的年份。 | 24 |
%(yyyy) | 包括纪元的四位数的年份。 | 2024 |
%(gg) | 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。 | 20 |
%(M) | 月份数字。一位数的月份没有前导零。 | 10 |
%M | 月份数字。一位数的月份没有前导零。%(M) 的简略写法。 |
10 |
%(MM) | 月份数字。一位数的月份有一个前导零。 | 10 |
%(MMM) | 月份的缩写名称。 | 十 |
%(MMMM) | 月份的缩写名称。 | 十月 |
%(D) | 年中的某一天。 | 303 |
%D | 年中的某一天。%(D) 的简略写法。 |
303 |
%(DD) | 这一年共有多少天。 | 366 |
%(d) | 月中的某一天。一位数的日期没有前导零。 | 31 |
%d | 月中的某一天。一位数的日期没有前导零。%(d) 的简略写法。 |
31 |
%(dd) | 月中的某一天。一位数的日期有一个前导零。 | 31 |
%(w) | 周中的某一天。 | 5 |
%w | 周中的某一天。%(w) 的简略写法。 |
5 |
%(ww) | 周中某天的缩写名称。 | 四 |
%(www) | 周中某天的缩写名称。 | 星期四 |
%(h) | 12 小时制的小时。一位数的小时数没有前导零。 | 3 |
%h | 12 小时制的小时。一位数的小时数没有前导零。%(h) 的简略写法。 |
3 |
%(hh) | 12 小时制的小时。一位数的小时数有一个前导零。 | 03 |
%(H) | 24 小时制的小时。一位数的小时数没有前导零。 | 3 |
%H | 24 小时制的小时。一位数的小时数没有前导零。%(H) 的简略写法。 |
3 |
%(HH) | 24 小时制的小时。一位数的小时数有一个前导零。 | 03 |
%(m) | 分钟。一位数的分钟数没有前导零。 | 54 |
%m | 分钟。一位数的分钟数没有前导零。%(m) 的简略写法。 |
54 |
%(mm) | 分钟。一位数的分钟数有一个前导零。 | 54 |
%(s) | 秒。一位数的秒数没有前导零。 | 47 |
%s | 秒。一位数的秒数没有前导零。%(s) 的简略写法。 |
47 |
%(ss) | 秒。一位数的秒数有一个前导零。 | 47 |
%(sss) | Unix时间戳(Unix timestamp)。从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 | 1730372087 |
%(t) | 一天中时间段的更加详细的提示信息。 | 上午 |
%t | 一天中时间段的更加详细的提示信息。%(t) 的简略写法。 |
上午 |
%(tt) | 一天中时间段的更加详细的提示信息。 | 凌晨 |
%(z) | 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。 | +8 |
%z | 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数没有前导零。例如,太平洋标准时间是“-8”。%(z) 的简略写法。 |
+8 |
%(zz) | 时区偏移量(“+”或“-”后面仅跟小时)。一位数的小时数有前导零。例如,太平洋标准时间是“-08”。 | +08 |
%(zzz) | 完整时区偏移量(“+”或“-”后面跟有小时和分钟)。一位数的小时数和分钟数有前导零。例如,太平洋标准时间是“-08:00”。 | +08:00 |
%(%) | 表示字符“%”。 | % |
%% | 表示字符“%”。%(%) 的简略写法。 |
% |
用法
- 简单示例:
代码
{{TimeZone|+8}} 现在是北京时间{{TimeZone/convert|%(yyyy)年%(MM)月%(dd)日 %(HH)时%(mm)分%(ss)秒}}。<br/> 当北京时间{{TimeZone/convert|y=2018|m=12|d=15|h=0|i=0|s=0|%(yyyy)年%(MM)月%(dd)日 %(HH)时%(mm)分%(ss)秒(UTC+8)}}时,太平洋时间为{{TimeZone/convert|Y=2018|m=12|d=15|H=0|i=0|s=0|%(yyyy)年%(MM)月%(dd)日 %(HH)时%(mm)分%(ss)秒(UTC-8)|c_tz=-8}}
效果
除非特别注明,本页面所有时间皆以东八区时间(UTC+08:00)为准。
现在是北京时间2024年10月31日 03时54分47秒。
当北京时间2018年12月15日 00时00分00秒(UTC+8)时,太平洋时间为2024年12月14日 11时00分00秒(UTC-8)
- 全球各时区时间:
- 主页面:Template:TimeZone/convert/doc/全球各时区时间
高级用法
这个模板与{{TimeZone}}配合使用可以自动转换页面上的所有非特别注明的时间。
案例
- [[少女歌剧 Revue Starlight/1st STAR LIVE -Starry Sky-]]
- [[少女歌剧 Revue Starlight/2nd STAR LIVE -Starry Desert-]]
|