Step By Step(Lua系統庫)


    Lua為了保證高度的可移植性,因此,它的標准庫僅僅提供了非常少的功能,特別是和OS相關的庫。但是Lua還提供了一些擴展庫,比如Posix庫等。對於文件操作而言,該庫僅提供了os.rename函數和os.remove函數。
    
    1. 日期和時間:
    在Lua中,函數timedate提供了所有的日期和時間功能。
    如果不帶任何參數調用time函數,它將以數字形式返回當前的日期和時間。如果以一個table作為參數,它將返回一個數字,表示該table中所描述的日期和時間。該table的有效字段如下:

字段名 描述
year 一個完整的年份
month 01-12
day 01-31
hour 00-23
min 00-59
sec 00-59
isdst 布爾值,true表示夏令時

    print(os.time{year = 1970, month = 1, day = 1, hour = 8, min = 0}) --北京是東八區,所以hour等於時表示UTC的0。
    print(os.time())  --輸出當前時間距離1970-1-1 00:00:00所經過的秒數。輸出值為 1333594721
    函數date是time的反函數,即可以將time返回的數字值轉換為更高級的可讀格式,其第一個參數是格式化字符串,表示期望的日期返回格式,第二個參數是日期和時間的數字,缺省為當前日期和時間。如:

 1 dd = os.date("*t",os.time())  --如果格式化字符串為"*t",函數將返回table形式的日期對象。如果為"!*t",則表示為UTC時間格式。
2 print("year = " .. dd.year)
3 print("month = " .. dd.month)
4 print("day = " .. dd.day)
5 print("weekday = " .. dd.wday) --一個星期中的第幾天,周日是第一天
6 print("yearday = " .. dd.yday) --一年中的第幾天,1月1日是第一天
7 print("hour = " .. dd.hour)
8 print("min = " .. dd.min)
9 print("sec = " .. dd.sec)
10
11 --[[
12 year = 2012
13 month = 4
14 day = 5
15 weekday = 5
16 yearday = 96
17 hour = 11
18 min = 13
19 sec = 44
20 --]]

    date函數的格式化標識和C運行時庫中的strftime函數的標識完全相同,見下表:

關鍵字 描述
%a 一星期中天數的縮寫,如Wed
%A 一星期中天數的全稱,如Friday
%b 月份的縮寫,如Sep
%B 月份的全稱,如September
%c 日期和時間
%d 一個月中的第幾天(01-31)
%H 24小時制中的小時數(00-23)
%I 12小時制中的小時數(01-12)
%j 一年中的第幾天(001-366)
%M 分鍾(00-59)
%m 月份(01-12)
%p "上午(am)"或"下午(pm)"
%S 秒數(00-59)
%w 一星期中的第幾天(0--6等價於星期日--星期六)
%x 日期,如09/16/2010
%X 時間,如23:48:20
%y 兩位數的年份(00-99)
%Y 完整的年份(2012)
%% 字符'%'

    print(os.date("%Y-%m-%d"))  --輸出2012-04-05
    函數os.clock()返回CPU時間的描述,通常用於計算一段代碼的執行效率。如:

1 local x = os.clock()
2 local s = 0
3 for i = 1, 10000000 do
4 s = s + i
5 end
6 print(string.format("elapsed time: %.2f\n", os.clock() - x))
7
8 --輸出結果為:
9 --elapsed time: 0.21


    2. 其他系統調用:
    函數os.exit()可中止當前程序的執行。函數os.getenv()可獲取一個環境變量的值。如:
    print(os.getenv("PATH"))  --如果環境變量不存在,返回nil。
    os.execute函數用於執行和操作系統相關的命令,如:
    os.execute("mkdir " .. "hello")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM