第一版是為 Lua 5.0 編寫的。雖然對後續版本來說仍然有很大的相關性,但還是有些差異。
第四版鎖定 Lua 5.3,可以在 Amazon 和其他書店買到。
購買這本書,您也同時 贊助了 Lua 專案。
![]() |
用 Lua 程式設計 | ![]() |
第三部分。標準函式庫 第 22 章。作業系統函式庫 |
在 Lua 中,所有日期和時間的查詢都由兩個函式 time
和 date
執行。
time
函式在沒有參數的情況下呼叫時,會傳回目前的日期和時間,編碼成一個數字。(在大部分的系統中,這個數字是從某個紀元開始的秒數。)當使用一個表格呼叫時,它會傳回一個數字,表示表格中所描述的日期和時間。這種日期表格具有下列重要的欄位
year | 完整的年份 |
month | 01-12 |
天 | 01-31 |
hour | 00-23 |
min | 00-59 |
sec | 00-59 |
isdst | 布林值,如果實施夏令時間,則為 true |
前三個欄位是強制性的;其他欄位在未提供時,預設為中午(12:00:00)。在 Unix 系統(紀元為 1970 年 1 月 1 日格林威治時間上午 00:00:00)中,在里約熱內盧執行(比格林威治時間晚三小時),我們有下列範例
-- obs: 10800 = 3*60*60 (3 hours) print(os.time{year=1970, month=1, day=1, hour=0}) --> 10800 print(os.time{year=1970, month=1, day=1, hour=0, sec=1}) --> 10801 print(os.time{year=1970, month=1, day=1}) --> 54000 (obs: 54000 = 10800 + 12*60*60)
date
函式儘管名稱是日期,但卻有點像是 time
函式的反向:它將表示日期和時間的數字轉換回較高階的表示方式。它的第一個參數是一個格式字串,用來描述我們要的表示方式。第二個參數是數字日期時間;預設為目前的日期和時間。
要產生一個日期表格,我們使用格式字串 "*t"
。例如,下列程式碼
temp = os.date("*t", 906000490)會產生表格
{year = 1998, month = 9, day = 16, yday = 259, wday = 4, hour = 23, min = 48, sec = 10, isdst = false}請注意,除了
os.time
使用的欄位之外,os.date
所建立的表格也提供星期幾(wday
,1 是星期日)和年日(yday
,1 是 1 月 1 日)。
對於其他格式字串,os.date
會將日期格式化為字串,這是格式字串的複本,其中特定的標籤會被時間和日期的資訊取代。所有標籤都由 `%
´ 後接一個字母表示,如下列範例
print(os.date("today is %A, in %B")) --> today is Tuesday, in May print(os.date("%x", 906000490)) --> 09/16/1998所有表示都遵循目前語言環境。因此,在巴西葡萄牙語語言環境中,
%B
會產生 "setembro"
,而 %x
會產生 "16/09/98"
。
下表顯示每個標籤、其意義,以及其在 1998 年 9 月 16 日(星期三)下午 11:48:10 的值。對於數值,表格也會顯示其可能值的範圍
%a | 縮寫的星期名稱(例如,星期三 ) |
%A | 完整的星期名稱(例如,星期三 ) |
%b | 縮寫的月份名稱(例如,9 月 ) |
%B | 完整的月份名稱(例如,9 月 ) |
%c | 日期和時間(例如,09/16/98 23:48:10 ) |
%d | 日期中的天數(16 )[01-31] |
%H | 使用 24 小時制的小時(23 )[00-23] |
%I | 使用 12 小時制的小時(11 )[01-12] |
%M | 分鐘(48 )[00-59] |
%m | 月份(09 )[01-12] |
%p | "am" 或 "pm" (pm ) |
%S | 秒數(10 )[00-61] |
%w | 星期(3 )[0-6 = 星期日到星期六] |
%x | 日期(例如,09/16/98 ) |
%X | 時間(例如,23:48:10 ) |
%Y | 完整的年份(1998 ) |
%y | 兩位數的年份(98 )[00-99] |
%% | 字元 `% ´ |
如果您在沒有任何引數的情況下呼叫 date
,它會使用 %c
格式,也就是以合理的格式提供完整的日期和時間資訊。請注意,%x
、%X
和 %c
的表示會根據語言環境和系統而有所不同。如果您想要固定的表示,例如 mm/dd/yyyy
,請使用明確的格式字串,例如 "%m/%d/%Y"
。
os.clock
函數會傳回程式 CPU 時間的秒數。其典型用途是對一段程式碼進行基準測試
local x = os.clock() local s = 0 for i=1,100000 do s = s + i end print(string.format("elapsed time: %.2f\n", os.clock() - x))
版權所有 © 2003–2004 Roberto Ierusalimschy。保留所有權利。 | ![]() |