置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

模組:模糊時間/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表的屬性

yearmonthdayweekwdayydayhourminutesecond

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) 時間-日內詳細描述 上午