模板:TimeZone/convert/doc

来自维阿百科
跳转至: 导航搜索

简介

这个模板会根据指定的日期和时区,换算出新时区下的日期,并按指定的格式输出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 = <!-- 现在的时区 --> |<!-- 格式化字符串 --> }}

  • yeary:原时区下的年份,默认值为在原时区下当前时间的年份。
  • monm:原时区下的月份,默认值为在原时区下当前时间的月份。
  • dayd:原时区下的日期,默认值为在原时区下当前时间的日期。
  • hourh:原时区下的小时数,默认值为在原时区下当前时间的小时数。
  • mini:原时区下的分钟数,默认值为在原时区下当前时间的分钟数。
  • secs:原时区下的秒数,默认值为在原时区下当前时间的秒数。
  • o_timezoneo_tz:原来的时区,默认值为用户当前所在的时区。
  • c_timezonec_tz:现在的时区,默认值为用户当前所在的时区。
  • {{{1}}}:第一个匿名参数,指示如何格式化新日期。

原理

了解模板的实现原理有助于对模板的理解和运用。 以下说明了模板的实现以及工作原理:

  1. 在条目序言中添加{{TimeZone}},将会定义一个全局变量{{#var:timezone}}
    • {{#var:timezone}}的值为使用{{TimeZone}}时指定的时间参数,若并未指定时间参数,则使用[[模块:TimeZone]]计算得到的用户当前时区。
  2. 计算原来的时区和现在的时区
    1. 计算o_timezoneo_tz
      • 若两个参数的值均为空,则使用[[模块:TimeZone]]计算得到的用户当前时区。
    2. 计算c_timezonec_tz
      • 若两个参数的值均为空,则使用{{#var:timezone}}的值;
      • {{#var:timezone}}的值为空(【不建议】当未添加{{TimeZone}}的情况下),则使用[[模块:TimeZone]]计算得到的用户当前时区。
  3. 依次计算:
    1. yeary:若两个参数的值均为空,则使用在原时区下当前时间的年份。
    2. monm:若两个参数的值均为空,则使用在原时区下当前时间的月份。
    3. dayd:若两个参数的值均为空,则使用在原时区下当前时间的日期。
    4. hourh:若两个参数的值均为空,则使用在原时区下当前时间的小时数。
    5. mini:若两个参数的值均为空,则使用在原时区下当前时间的分钟数。
    6. secs:若两个参数的值均为空,则使用在原时区下当前时间的秒数。
  4. 汇总所有参数,使用[[模块:TimeZone]]计算新日期,并根据{{{1}}}格式化新日期。
  5. 返回结果。

格式化参数

目前{{TimeZone/convert}}共支持42个格式化参数:

示例时间:2024年12月26日 (星期四) 凌晨 03:03:39

格式化参数 说明 示例输出

%(y) 不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。 24
%y 不包含纪元的年份。如果不包含纪元的年份小于10,则显示不具有前导零的年份。%(y)的简略写法。 24
%(yy) 不包含纪元的年份。如果不包含纪元的年份小于10,则显示具有前导零的年份。 24
%(yyyy) 包括纪元的四位数的年份。 2024
%(gg) 时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。 20
%(M) 月份数字。一位数的月份没有前导零。 12
%M 月份数字。一位数的月份没有前导零。%(M)的简略写法。 12
%(MM) 月份数字。一位数的月份有一个前导零。 12
%(MMM) 月份的缩写名称。 十二
%(MMMM) 月份的缩写名称。 十二月
%(D) 年中的某一天。 360
%D 年中的某一天。%(D)的简略写法。 360
%(DD) 这一年共有多少天。 366
%(d) 月中的某一天。一位数的日期没有前导零。 26
%d 月中的某一天。一位数的日期没有前导零。%(d)的简略写法。 26
%(dd) 月中的某一天。一位数的日期有一个前导零。 26
%(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) 分钟。一位数的分钟数没有前导零。 3
%m 分钟。一位数的分钟数没有前导零。%(m)的简略写法。 3
%(mm) 分钟。一位数的分钟数有一个前导零。 03
%(s) 秒。一位数的秒数没有前导零。 39
%s 秒。一位数的秒数没有前导零。%(s)的简略写法。 39
%(ss) 秒。一位数的秒数有一个前导零。 39
%(sss) Unix时间戳(Unix timestamp)。从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 1735153419
%(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}}
效果
Nuvola apps important yellow.svg 除非特别注明,本页面所有时间皆以东八区时间(UTC+08:00)为准。

现在是北京时间2024年12月26日 03时03分39秒。

当北京时间2018年12月15日 00时00分00秒(UTC+8)时,太平洋时间为2024年12月14日 11时00分00秒(UTC-8)


全球各时区时间:
主页面:Template:TimeZone/convert/doc/全球各时区时间

高级用法

这个模板与{{TimeZone}}配合使用可以自动转换页面上的所有非特别注明的时间。

主页面:Template:TimeZone

案例