模块:模糊时间/doc
这是Module:模糊时间的文档页面
模糊时间模块用于匹配获取一个时间文本,进而,可以进行时间计算、时间比较、时区调整、依据给定的格式进行格式化。 与其他时间函数不同之处在于,本模块支持不规范的、模糊描述以及时间段描述的文本,并允许在格式化时省略精确度不足的内容。
函数
initialize(from,to,connect)
初始化设置。
from
为文本语言,可选zh
/en
/all
,默认为zh
。to
为格式化目标语言,可选zh
/en
,默认为zh
。- connect为时间连接符,指格式化时使用时间段概念时连接两时间点的文本。默认为
到
。
toTime(text,analysis_pattern)
将文本解析转换为time表
。time表
具有os.time
可以识别的结构。
- 能识别ISO 8601格式的时间,如
2024-10-05T09:12:29+00:00
。但暂不识别追加的时区文本。 - 能识别带有单位的文本,如
2012年
。支持乱序。 - 能识别特定的时间描述,如
星期五
凌晨
。 - 字符
到
至
-
\
被视为时间段的描述关键字。 - 字符
%s
中文空格,
被忽略。
基本可以认为,所有该函数可以输出的格式化格式,都可以被其识别。
如果指定analysis_pattern
,则将使用固定的格式进行匹配。对于固定格式的文本,将大大节省解析时间。其中格式匹配符与#占位符标准相同。没有指定该参数的场合,函数将试图使用所有可能的格式进行分析匹配。
time表的属性
year
,month
,day
,week
,wday
,yday
,hour
,minute
,second
。
time表的函数
time表可以执行以下函数:
运算符
time:__connect(other)
即..
。连接两时间,获得时间段。
time:__add(other)
即+
。时间加法。
time:__sub(other)
即-
。时间减法。
其他函数
time:add(tag,value)
按标签计算。标签可以为属性其一。暂且唯有原time中具有该精确度的标签才有效。
time:convert(o_timezone,c_timezone)
时区转换。
c_timezone
默认为当前时区。o_timezone
默认为{{TimeZone}}所定义的时区。
time:supply(other,pre,after)
补足精确度。使用另一时间对其补足缺失的精确度以及值。已有部分则忽略。
pre
为true则补足前部缺失值(如年、月),after
设置为true则补足后部缺失值(如秒、分)。两参数默认为true。
time:getNumber()
获取时间段前后的对应os.time
数值。
time:sort()
规范数据,计算后如果需要从属性获得准确值需调用。在格式化前会自动调用。
time:format(pattern,ignore)
格式化为文本。
ignore
如果为true
,则在非必要时忽略区域性描述(诸如旬)(如果精确度只达到该描述,则不省略)。如果为false
,则强制要求所有精确度都输出值。ignore
默认为nil
,此时正常输出,忽略不具备的精确度。
其中pattern
的占位符标准详见#占位符。
format(text,pattern,ignore,o_timezone,c_timezone,a_pattern)
格式化输出。这个函数是功能的集合版本。
text
为时间文本ignore
同上。pattern
的占位符标准详见#格式化。o_timezone
原时区,即文本使用时区c_timezone
现时区,即显示时区。默认采用{{timezone}}模板定义的时区。a_pattern
,分析用字符串。
格式化
格式化使用到
作为时间段描述方式(或许可以考虑增加到占位符中)。
格式化使用的替换用占位符如下。
待扩展中文数字表达。
示例时间:2024年10月5日9时12分29秒
类型 | 格式化参数 | 说明 | 输出
|
---|---|---|---|
%E | 日期-年月日 (ISO 8601格式)(不支持省略) | 2024-10-05
| |
%(Eo) | 日期-年月日 (ISO 8601格式)(不支持省略) | 2024.10.05 | |
%(Ew) | 日期-年周星期 (ISO 8601格式)(不支持省略) | 2024-W40-6 | |
%e | 时间-时分秒 (ISO 8601格式)(不支持省略) | 09:12:29 | |
%a | 根据时间是上午还是下午,输出am或pm | am | |
%(au) | 根据时间是上午还是下午,输出AM或PM | AM | |
%(cf) | 日期-世纪,2位数字,补足前导0 | 21 | |
%(tf) | 日期-年代,2位数字,补足前导0 | 20 | |
%(yf) | 日期-年份,4位数字,补足前导0 | 2024 | |
%(mf) | 日期-月,2位数字,补足前导0 | 10 | |
%(df) | 日期-日,2位数字,补足前导0 | 05 | |
%(wf) | 日期-年内第几周,2位数字,补足前导0 | 40 | |
%(hf) | 时间-小时,2位数字,补足前导0 | 09 | |
%(if) | 时间-分钟,2位数字,补足前导0 | 12 | |
%(sf) | 时间-秒,2位数字,补足前导0 | 29 | |
%c | 日期-世纪 | 21 | |
%t | 日期-年代 | 2020 | |
%y | 日期-年份 | 2024 | |
%m | 日期-月 | 10 | |
%w | 日期-年内第几周 | 40 | |
%d | 日期-日 | 5 | |
%(dy) | 日期-日 年内第几日 | 279 | |
%l | 日期-星期,1位数字 | 6 | |
%h | 时间-小时 | 9 | |
%(hy) | 时间-小时 十二小时制 | 9 | |
%i | 时间-分钟 | 12 | |
%s | 时间-秒 | 29 | |
%X | 年月日时分秒 (ISO 8601格式)(不支持省略) | 2024-10-05 T09:12:29 | |
%x | 年周日时分秒 (ISO 8601格式)(不支持省略) | 2024W40-5 T09:12:29 | |
en | %T | 2020s
| |
%(Ms) | Oct | ||
%M | October | ||
%(Ls) | Sat | ||
%L | Saturday | ||
%D | 5nd | ||
zh | %C | 日期-世纪 单位“世纪” | 21世纪
|
%(Tf) | 日期-年代 单位“年代”,只取后两位 | 20年代 | |
%T | 日期-年代 单位“年代” | 2020年代 | |
%Y | 日期-年 单位“年” | 2024年 | |
%M | 日期-月 单位“月” | 10月 | |
%(Mc) | 日期-月 中文文字 | 十月 | |
%W | 日期-周 单位“周” | 40周 | |
%D | 日期-日 单位“日” | 5日 | |
%(Dy) | 日期-日 年内第几日 单位“日” | 279日 | |
%(Do) | 日期-日 单位“号” | 5号 | |
%L | 日期-星期 中文文字“星期” | 星期六 | |
%(Lss) | 日期-星期 中文文字大写“周” | 周六 | |
%(Ls) | 日期-星期 只输出一个中文文字 | 六 | |
%H | 时间-时 单位“时” | 9时 | |
%(Hy) | 时间-时 单位“时” 十二小时制 | 9时 | |
%(Ho) | 时间-时 单位“点” | 9点 | |
%I | 时间-分 单位“分” | 12分 | |
%S | 时间-秒 单位“秒” | 29秒 | |
%(Mi) | 日期-月内描述“旬”,十日为一旬 | 上旬 | |
%A | 时间-根据时间输出上午或下午 | 上午 | |
%(Di) | 时间-日内详细描述 | 上午 |