模組:模糊時間/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-21T10:18:11+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月21日10時18分11秒
類型 | 格式化參數 | 說明 | 輸出
|
---|---|---|---|
%E | 日期-年月日 (ISO 8601格式)(不支持省略) | 2024-10-21
| |
%(Eo) | 日期-年月日 (ISO 8601格式)(不支持省略) | 2024.10.21 | |
%(Ew) | 日期-年周星期 (ISO 8601格式)(不支持省略) | 2024-W43-1 | |
%e | 時間-時分秒 (ISO 8601格式)(不支持省略) | 10:18:11 | |
%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 | 21 | |
%(wf) | 日期-年內第幾周,2位數字,補足前導0 | 43 | |
%(hf) | 時間-小時,2位數字,補足前導0 | 10 | |
%(if) | 時間-分鐘,2位數字,補足前導0 | 18 | |
%(sf) | 時間-秒,2位數字,補足前導0 | 11 | |
%c | 日期-世紀 | 21 | |
%t | 日期-年代 | 2020 | |
%y | 日期-年份 | 2024 | |
%m | 日期-月 | 10 | |
%w | 日期-年內第幾周 | 43 | |
%d | 日期-日 | 21 | |
%(dy) | 日期-日 年內第幾日 | 295 | |
%l | 日期-星期,1位數字 | 1 | |
%h | 時間-小時 | 10 | |
%(hy) | 時間-小時 十二小時制 | 10 | |
%i | 時間-分鐘 | 18 | |
%s | 時間-秒 | 11 | |
%X | 年月日時分秒 (ISO 8601格式)(不支持省略) | 2024-10-21 T10:18:11 | |
%x | 年周日時分秒 (ISO 8601格式)(不支持省略) | 2024W43-21 T10:18:11 | |
en | %T | 2020s
| |
%(Ms) | Oct | ||
%M | October | ||
%(Ls) | Mon | ||
%L | Monday | ||
%D | 21nd | ||
zh | %C | 日期-世紀 單位「世紀」 | 21世紀
|
%(Tf) | 日期-年代 單位「年代」,只取後兩位 | 20年代 | |
%T | 日期-年代 單位「年代」 | 2020年代 | |
%Y | 日期-年 單位「年」 | 2024年 | |
%M | 日期-月 單位「月」 | 10月 | |
%(Mc) | 日期-月 中文文字 | 十月 | |
%W | 日期-周 單位「周」 | 43周 | |
%D | 日期-日 單位「日」 | 21日 | |
%(Dy) | 日期-日 年內第幾日 單位「日」 | 295日 | |
%(Do) | 日期-日 單位「號」 | 21號 | |
%L | 日期-星期 中文文字「星期」 | 星期一 | |
%(Lss) | 日期-星期 中文文字大寫「周」 | 周一 | |
%(Ls) | 日期-星期 只輸出一個中文文字 | 一 | |
%H | 時間-時 單位「時」 | 10時 | |
%(Hy) | 時間-時 單位「時」 十二小時制 | 10時 | |
%(Ho) | 時間-時 單位「點」 | 10點 | |
%I | 時間-分 單位「分」 | 18分 | |
%S | 時間-秒 單位「秒」 | 11秒 | |
%(Mi) | 日期-月內描述「旬」,十日為一旬 | 下旬 | |
%A | 時間-根據時間輸出上午或下午 | 上午 | |
%(Di) | 時間-日內詳細描述 | 上午 |