<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://hmoegirl.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ATimeZone</id>
	<title>Module:TimeZone - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://hmoegirl.com/index.php?action=history&amp;feed=atom&amp;title=Module%3ATimeZone"/>
	<link rel="alternate" type="text/html" href="https://hmoegirl.com/index.php?title=Module:TimeZone&amp;action=history"/>
	<updated>2026-07-18T06:41:58Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://hmoegirl.com/index.php?title=Module:TimeZone&amp;diff=60269&amp;oldid=prev</id>
		<title>imported&gt;=海豚=：​创建页面，内容为“local module = {}  function module.getTimeZone(frame)     local hour, minute = normalize(frame.args[1])     local timezone = timeZoneToString(hour, minute)…”</title>
		<link rel="alternate" type="text/html" href="https://hmoegirl.com/index.php?title=Module:TimeZone&amp;diff=60269&amp;oldid=prev"/>
		<updated>2020-05-26T14:07:24Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“local module = {}  function module.getTimeZone(frame)     local hour, minute = normalize(frame.args[1])     local timezone = timeZoneToString(hour, minute)…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local module = {}&lt;br /&gt;
&lt;br /&gt;
function module.getTimeZone(frame)&lt;br /&gt;
    local hour, minute = normalize(frame.args[1])&lt;br /&gt;
    local timezone = timeZoneToString(hour, minute)&lt;br /&gt;
    &lt;br /&gt;
    local output = frame.args[&amp;quot;output&amp;quot;]&lt;br /&gt;
    if output == &amp;quot;number&amp;quot; then&lt;br /&gt;
        return timezone&lt;br /&gt;
    elseif output == &amp;quot;utc&amp;quot; then&lt;br /&gt;
        return &amp;quot;UTC&amp;quot;..timezone&lt;br /&gt;
    elseif output == &amp;quot;text&amp;quot; then&lt;br /&gt;
        if timezone == &amp;quot;+00:00&amp;quot; then&lt;br /&gt;
            return &amp;quot;零时区&amp;quot;&lt;br /&gt;
        else&lt;br /&gt;
            local left, middle&lt;br /&gt;
            &lt;br /&gt;
            --当时间差超过±12小时，在计算时区是必须调整至±12小时的范围内。&lt;br /&gt;
            local hour = math.fmod(hour, 24)&lt;br /&gt;
            local abs_hour = math.abs(hour)&lt;br /&gt;
            local sign = hour / abs_hour&lt;br /&gt;
            if abs_hour &amp;gt; 12 or (abs_hour == 12 and minute &amp;gt; 0) then&lt;br /&gt;
                hour = 24 - abs_hour&lt;br /&gt;
                if minute ~= 0 then&lt;br /&gt;
                    hour = hour - 1&lt;br /&gt;
                    minute = 60 - minute&lt;br /&gt;
                end&lt;br /&gt;
                hour = -sign * hour&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            if hour &amp;lt; 0 then&lt;br /&gt;
                left = &amp;quot;西&amp;quot;&lt;br /&gt;
            else&lt;br /&gt;
                left = &amp;quot;东&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
            &lt;br /&gt;
            local texts = {&amp;quot;一&amp;quot;,&amp;quot;二&amp;quot;,&amp;quot;三&amp;quot;,&amp;quot;四&amp;quot;,&amp;quot;五&amp;quot;,&amp;quot;六&amp;quot;,&amp;quot;七&amp;quot;,&amp;quot;八&amp;quot;,&amp;quot;九&amp;quot;,&amp;quot;十&amp;quot;,&amp;quot;十一&amp;quot;,&amp;quot;十二&amp;quot;}&lt;br /&gt;
            middle = texts[math.abs(tonumber(hour))]&lt;br /&gt;
            &lt;br /&gt;
            return left..middle..&amp;quot;区&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.convert(frame)&lt;br /&gt;
    local args = frame.args&lt;br /&gt;
    &lt;br /&gt;
    local year = tonumber(args[&amp;quot;year&amp;quot;])&lt;br /&gt;
    local month = tonumber(args[&amp;quot;month&amp;quot;])&lt;br /&gt;
    local day = tonumber(args[&amp;quot;day&amp;quot;])&lt;br /&gt;
    local hour = tonumber(args[&amp;quot;hour&amp;quot;]) or 12&lt;br /&gt;
    local minute = tonumber(args[&amp;quot;minute&amp;quot;]) or 0&lt;br /&gt;
    local second = tonumber(args[&amp;quot;second&amp;quot;]) or 0&lt;br /&gt;
    &lt;br /&gt;
    local o_hour, o_minute = normalize(args[&amp;quot;o_timezone&amp;quot;])&lt;br /&gt;
    local c_hour, c_minute = normalize(args[&amp;quot;c_timezone&amp;quot;])&lt;br /&gt;
    local o_sign, c_sign&lt;br /&gt;
    if o_hour &amp;gt;= 0 then o_sign = 1 else o_sign = -1 end&lt;br /&gt;
    if c_hour &amp;gt;= 0 then c_sign = 1 else c_sign = -1 end&lt;br /&gt;
    &lt;br /&gt;
    local difftime = (c_hour * 3600 + o_sign * c_minute * 60) -&lt;br /&gt;
                     (o_hour * 3600 + c_sign * o_minute * 60)&lt;br /&gt;
    &lt;br /&gt;
    local o_time = { year = year, month = month, day = day, hour = hour, min = minute, sec = second }&lt;br /&gt;
    local c_time = os.date(&amp;quot;*t&amp;quot;, os.time(o_time) + difftime)&lt;br /&gt;
    &lt;br /&gt;
    local text = args[1] or &amp;quot;&amp;quot;&lt;br /&gt;
    --剥离nowiki标签。&lt;br /&gt;
    text = mw.text.unstripNoWiki(text)&lt;br /&gt;
    text = mw.text.decode(text)&lt;br /&gt;
    &lt;br /&gt;
    --格式化日期&lt;br /&gt;
    c_time[&amp;#039;timezone&amp;#039;] = {c_hour, c_minute}&lt;br /&gt;
    text = formatDate(text, c_time)&lt;br /&gt;
    &lt;br /&gt;
    --生成能解析wiki文本的字符串。&lt;br /&gt;
    text = frame:preprocess(text)&lt;br /&gt;
    &lt;br /&gt;
    return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function module.formatList(frame)&lt;br /&gt;
    local var_array = require(&amp;quot;Module:Var-array&amp;quot;)&lt;br /&gt;
    local formatList = {}&lt;br /&gt;
    for i, item in ipairs(getFormat()) do&lt;br /&gt;
        table.insert(formatList, { item.format, item.description })&lt;br /&gt;
    end&lt;br /&gt;
    var_array.new(&amp;quot;timezone.convert.formatlist&amp;quot;, formatList)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function getFormat()&lt;br /&gt;
    return {&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(y)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;不包含纪元的年份。如果不包含纪元的年份小于10，则显示不具有前导零的年份。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(string.sub(tostring(time.year), -2))) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%y&amp;quot;,&lt;br /&gt;
            description = &amp;quot;不包含纪元的年份。如果不包含纪元的年份小于10，则显示不具有前导零的年份。&amp;lt;code&amp;gt;%(y)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(string.sub(tostring(time.year), -2))) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(yy)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;不包含纪元的年份。如果不包含纪元的年份小于10，则显示具有前导零的年份。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, tonumber(string.sub(tostring(time.year), -2))) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(yyyy)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;包括纪元的四位数的年份。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(time.year) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(gg)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;时期或纪元。如果要设置格式的日期不具有关联的时期或纪元字符串，则忽略该模式。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring((tonumber(time.year) - tonumber(string.sub(tostring(time.year), -2))) / 100) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(M)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月份数字。一位数的月份没有前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.month)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%M&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月份数字。一位数的月份没有前导零。&amp;lt;code&amp;gt;%(M)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.month)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(MM)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月份数字。一位数的月份有一个前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, (tonumber(time.month))) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(MMM)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月份的缩写名称。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local AbbreviatedMonthNames = { &amp;quot;一&amp;quot;, &amp;quot;二&amp;quot;, &amp;quot;三&amp;quot;, &amp;quot;四&amp;quot;, &amp;quot;五&amp;quot;, &amp;quot;六&amp;quot;, &amp;quot;七&amp;quot;, &amp;quot;八&amp;quot;, &amp;quot;九&amp;quot;, &amp;quot;十&amp;quot;, &amp;quot;十一&amp;quot;, &amp;quot;十二&amp;quot; }&lt;br /&gt;
                return AbbreviatedMonthNames[tonumber(time.month)]&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(MMMM)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月份的缩写名称。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local AbbreviatedMonthNames = { &amp;quot;一&amp;quot;, &amp;quot;二&amp;quot;, &amp;quot;三&amp;quot;, &amp;quot;四&amp;quot;, &amp;quot;五&amp;quot;, &amp;quot;六&amp;quot;, &amp;quot;七&amp;quot;, &amp;quot;八&amp;quot;, &amp;quot;九&amp;quot;, &amp;quot;十&amp;quot;, &amp;quot;十一&amp;quot;, &amp;quot;十二&amp;quot; }&lt;br /&gt;
                return AbbreviatedMonthNames[tonumber(time.month)]..&amp;quot;月&amp;quot;&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(D)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;年中的某一天。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                t1 = { year = time.year, month = time.month, day = time.day, hour = 0, min = 0, sec = 0 }&lt;br /&gt;
                t2 = { year = time.year, month = 1, day = 1, hour = 0, min = 0, sec = 0 }&lt;br /&gt;
                return tostring(math.floor(os.difftime(os.time(t1), os.time(t2)) / 86400))&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%D&amp;quot;,&lt;br /&gt;
            description = &amp;quot;年中的某一天。&amp;lt;code&amp;gt;%(D)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                t1 = { year = time.year, month = time.month, day = time.day, hour = 0, min = 0, sec = 0 }&lt;br /&gt;
                t2 = { year = time.year, month = 1, day = 1, hour = 0, min = 0, sec = 0 }&lt;br /&gt;
                return tostring(math.floor(os.difftime(os.time(t1), os.time(t2)) / 86400))&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(DD)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;这一年共有多少天。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                t1 = { year = time.year + 1, month = 1, day = 1, hour = 0, min = 0, sec = 0 }&lt;br /&gt;
                t2 = { year = time.year, month = 1, day = 1, hour = 0, min = 0, sec = 0 }&lt;br /&gt;
                return tostring(math.floor(os.difftime(os.time(t1), os.time(t2)) / 86400))&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(d)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月中的某一天。一位数的日期没有前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.day)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%d&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月中的某一天。一位数的日期没有前导零。&amp;lt;code&amp;gt;%(d)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.day)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(dd)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;月中的某一天。一位数的日期有一个前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, tonumber(time.day)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(w)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;周中的某一天。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.wday)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%w&amp;quot;,&lt;br /&gt;
            description = &amp;quot;周中的某一天。&amp;lt;code&amp;gt;%(w)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.wday)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(ww)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;周中某天的缩写名称。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local wday = tonumber(time.wday)&lt;br /&gt;
                return mw.ustring.sub(&amp;quot;日一二三四五六&amp;quot;, wday, wday)&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(www)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;周中某天的缩写名称。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local wday = tonumber(time.wday)&lt;br /&gt;
                return &amp;quot;星期&amp;quot;..mw.ustring.sub(&amp;quot;日一二三四五六&amp;quot;, wday, wday)&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(h)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;12 小时制的小时。一位数的小时数没有前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(math.fmod(tonumber(time.hour), 12)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%h&amp;quot;,&lt;br /&gt;
            description = &amp;quot;12 小时制的小时。一位数的小时数没有前导零。&amp;lt;code&amp;gt;%(h)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(math.fmod(tonumber(time.hour), 12)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(hh)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;12 小时制的小时。一位数的小时数有一个前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, math.fmod(tonumber(time.hour), 12)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(H)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;24 小时制的小时。一位数的小时数没有前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.hour)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%H&amp;quot;,&lt;br /&gt;
            description = &amp;quot;24 小时制的小时。一位数的小时数没有前导零。&amp;lt;code&amp;gt;%(H)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.hour)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(HH)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;24 小时制的小时。一位数的小时数有一个前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, tonumber(time.hour)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(m)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;分钟。一位数的分钟数没有前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.min)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%m&amp;quot;,&lt;br /&gt;
            description = &amp;quot;分钟。一位数的分钟数没有前导零。&amp;lt;code&amp;gt;%(m)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.min)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(mm)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;分钟。一位数的分钟数有一个前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, tonumber(time.min)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(s)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;秒。一位数的秒数没有前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.sec)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%s&amp;quot;,&lt;br /&gt;
            description = &amp;quot;秒。一位数的秒数没有前导零。&amp;lt;code&amp;gt;%(s)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(tonumber(time.sec)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(ss)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;秒。一位数的秒数有一个前导零。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return string.format(&amp;quot;%02d&amp;quot;, tonumber(time.sec)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(sss)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;Unix时间戳（Unix timestamp）。从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return tostring(os.time(time)) end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(t)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;一天中时间段的更加详细的提示信息。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local hour = tonumber(time.hour)&lt;br /&gt;
                if hour &amp;lt; 12 then return &amp;quot;上午&amp;quot;&lt;br /&gt;
                else return &amp;quot;下午&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%t&amp;quot;,&lt;br /&gt;
            description = &amp;quot;一天中时间段的更加详细的提示信息。&amp;lt;code&amp;gt;%(t)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local hour = tonumber(time.hour)&lt;br /&gt;
                if hour &amp;lt; 12 then return &amp;quot;上午&amp;quot;&lt;br /&gt;
                else return &amp;quot;下午&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(tt)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;一天中时间段的更加详细的提示信息。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time)&lt;br /&gt;
                local hour = tonumber(time.hour)&lt;br /&gt;
                if hour &amp;lt; 7 then return &amp;quot;凌晨&amp;quot;&lt;br /&gt;
                elseif hour &amp;lt; 11 then return &amp;quot;上午&amp;quot;&lt;br /&gt;
                elseif hour &amp;lt; 13 then return &amp;quot;中午&amp;quot;&lt;br /&gt;
                elseif hour &amp;lt; 17 then return &amp;quot;下午&amp;quot;&lt;br /&gt;
                elseif hour &amp;lt; 20  then return &amp;quot;傍晚&amp;quot;&lt;br /&gt;
                elseif hour &amp;lt; 22 then return &amp;quot;晚上&amp;quot;&lt;br /&gt;
                else return &amp;quot;深夜&amp;quot;&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(z)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;时区偏移量（“+”或“-”后面仅跟小时）。一位数的小时数没有前导零。例如，太平洋标准时间是“-8”。&amp;quot;,&lt;br /&gt;
            callback = function(subStr, time)&lt;br /&gt;
                local hour, minute = time.timezone[1], time.timezone[2]&lt;br /&gt;
                if hour &amp;gt;= 0 then return &amp;quot;+&amp;quot;..hour&lt;br /&gt;
                else return tostring(hour)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%z&amp;quot;,&lt;br /&gt;
            description = &amp;quot;时区偏移量（“+”或“-”后面仅跟小时）。一位数的小时数没有前导零。例如，太平洋标准时间是“-8”。&amp;lt;code&amp;gt;%(z)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(subStr, time)&lt;br /&gt;
                local hour, minute = time.timezone[1], time.timezone[2]&lt;br /&gt;
                if hour &amp;gt;= 0 then return &amp;quot;+&amp;quot;..hour&lt;br /&gt;
                else return tostring(hour)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(zz)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;时区偏移量（“+”或“-”后面仅跟小时）。一位数的小时数有前导零。例如，太平洋标准时间是“-08”。&amp;quot;,&lt;br /&gt;
            callback = function(subStr, time)&lt;br /&gt;
                local hour, minute = time.timezone[1], time.timezone[2]&lt;br /&gt;
                if hour &amp;gt;= 0 then return string.format(&amp;quot;+%02d&amp;quot;, hour)&lt;br /&gt;
                else return string.format(&amp;quot;-%02d&amp;quot;, -hour)&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(zzz)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;完整时区偏移量（“+”或“-”后面跟有小时和分钟）。一位数的小时数和分钟数有前导零。例如，太平洋标准时间是“-08:00”。&amp;quot;,&lt;br /&gt;
            callback = function(subStr, time) &lt;br /&gt;
                mw.log(&amp;#039;zzzzz&amp;#039;)&lt;br /&gt;
                return timeZoneToString(time.timezone[1], time.timezone[2]) &lt;br /&gt;
            end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%(%)&amp;quot;,&lt;br /&gt;
            description = &amp;quot;表示字符“%”。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return &amp;quot;%&amp;quot; end&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            format = &amp;quot;%%&amp;quot;,&lt;br /&gt;
            description = &amp;quot;表示字符“%”。&amp;lt;code&amp;gt;%(%)&amp;lt;/code&amp;gt;的简略写法。&amp;quot;,&lt;br /&gt;
            callback = function(matched_times, time) return &amp;quot;%&amp;quot; end&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function formatDate(text, timeInfo)&lt;br /&gt;
    local FormatString = require(&amp;quot;Module:FormatString&amp;quot;)&lt;br /&gt;
    local tree = FormatString.buildTrie(getFormat())&lt;br /&gt;
    text = FormatString.replaceStr(text, tree, timeInfo)&lt;br /&gt;
    return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function normalize(timezone)&lt;br /&gt;
    if timezone == nil or #timezone == 0 then&lt;br /&gt;
        return currentTimeZone() --用户当前时区&lt;br /&gt;
    else&lt;br /&gt;
        local hour, minute = mw.ustring.match(mw.text.trim(timezone), &amp;quot;^([-%+]?%d+):?(%d*)$&amp;quot;)&lt;br /&gt;
        if hour == nil then&lt;br /&gt;
            error(&amp;quot;时区参数格式不正确。&amp;quot;)&lt;br /&gt;
        end&lt;br /&gt;
        return tonumber(hour), tonumber(minute) or 0&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function currentTimeZone()&lt;br /&gt;
    local a = os.date(&amp;#039;!*t&amp;#039;,os.time())--中时区的时间&lt;br /&gt;
    local b = os.date(&amp;#039;*t&amp;#039;,os.time())&lt;br /&gt;
    local seconds = os.difftime(os.time(b), os.time(a))&lt;br /&gt;
    &lt;br /&gt;
    local hour = math.floor(math.abs(seconds) / 3600)&lt;br /&gt;
    local minute = math.floor((math.abs(seconds) - hour * 3600) / 60)&lt;br /&gt;
    if seconds &amp;lt; 0 then&lt;br /&gt;
        hour = -hour&lt;br /&gt;
        if minute ~= 0 then&lt;br /&gt;
            minute = 60 - minute&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    &lt;br /&gt;
    return hour, minute&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function timeZoneToString(hour, minute)&lt;br /&gt;
    if minute == nil then minute = 0 end&lt;br /&gt;
    if hour &amp;gt;= 0 then&lt;br /&gt;
        return mw.ustring.format(&amp;quot;+%02d:%02d&amp;quot;, hour, minute)&lt;br /&gt;
    else&lt;br /&gt;
        return mw.ustring.format(&amp;quot;-%02d:%02d&amp;quot;, math.abs(hour), minute)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return module&lt;/div&gt;</summary>
		<author><name>imported&gt;=海豚=</name></author>
	</entry>
</feed>