【Lua遊戲開發】os庫-時間函式
一、時間的三種格式
1、用數值表示時間值
用數字值來表示時間值,
實際上時間值的本質就是一個數字值。
例如:
d = 1131286477
這裡的 1131286477 是一個以秒為單位的 格林威志時間(gmt),注意不同時區的時差
2、用字串表示時間
用字串來來表示時間。
例如:
d = "2005-11-06 22:18:30" --2005年11月6日 22點18分30秒
d = "11/06/2005 22:18:30" --即2005年11月6日 22點18分30秒
3、時間的列表格式
用table物件來表示時間
例如:
d = {year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false}
--同樣表示2005年11月6日 22點18分30秒,其中isdst=false表示不使用夏令時
我們可以這樣訪問時間列表 d.year = 2005;
二、取得數值(number)格式的時間值
time = os.time()
返回一個標準的number(數值)格式的時間值,這也是最原始的時間值
os.time()返回的時間是以秒為單位的。
1、獲取當前時間數值
time = os.time();
--如果沒有指定任何引數,則返回當前時間
2、通過table引數指定時間,獲取指定的時間數值
time = os.time(tab);
通過一個table引數,指定一個時間,返回時間的數值格式.
例如:
--year表示年,month表示月,day表示日期,hour表示小時,min表示分鐘,sec表示秒,isdst表示是否夏令時
time = os.time(tab) -->返回值為1131286710
三、取得列表(table)格式的時間
tab = os.date("*t",time)
可以將一個數值格式的時間轉換為字串或者列表
其中第一個引數指定返回的格式,如果第一個引數指定為"*t" 則返回一個table格式的時間。
第二個引數指定一個時間數值(以秒為單位)
1、獲取當前時間的table格式
tab = os.date("*t")
如果不指定os.date的第二個引數,則返回當前時間的table表示格式
2、通過時間數值,獲取指定時間的table格式
tab = os.date("*t", time)
通過os.date函式的第二個引數指定一個時間數值。
例如:
--返回值 tab 的資料 {year=2005, month=11, day=6, hour=22,min=18,sec=30}
--year表示年,month表示月,day表示日期,hour表示小時,min表示分鐘,sec表示秒,isdst表示是否夏令時
--tab成包括一些其他的成員 tab.yday 表示一年中的第幾天 tab.wday 表示星期幾(星期天為1)
time = os.time(tab) -->返回值為1131286710
四、取得時間的字串(string)格式
tab = os.date(format,time)
實際上與取得table格式的時間一樣,同樣是使用os.date引數,不同的是第一個引數
如果第一個引數不是"*t" os.date返回字串
關於format引數使用的格式化語法,請參考:string.ftime格式化語法
os.date 的用法與 string.ftime 完全相同
例如:
win.consoleOpen()print( os.date("today is %A, in %B") )
print( os.date("%x", 906000490) )
--輸出類似這樣的字串 09/16/1998
1、獲取當前時間的字串(string)格式
如果不指定os.date的第二個引數,則返回當前時間的table表示格式
例如:
str= os.date("*x")
2、通過時間數值,獲取指定時間的(string)格式
通過os.date函式的第二個引數指定一個時間數值。
例如:
str= os.date("*x",1131286710)
3、獲取時間的指定部份的(string)格式
例如:
str = os.date("%M") --返回當前時間分鐘部份的字串格式
五、時間數值與字串之間的轉換
六、計算時間值間隔
int = os.difftime(t2,t1);
t2,t1都是數值格式的時間值,返回值也是一個數值表示間隔的時間。
引數以及返回的時間值都是以秒為單位的數值格式。
local tab = {year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false}
t1 = os.time(tab)
tab.day = tab.day +1;--前進一天
t2 = os.time(tab)
int = os.difftime(t2,t1);
win.messageBox(int.."秒","時間差"
七、系統時鐘
int = os.tick();
讀取系統時鐘,以毫秒為單位。表示從系統啟動到當前時刻所過去的毫秒數。
int = os.clock()
讀取系統時鐘,以秒為單位。表示從系統啟動到當前時刻所過去的秒數。
因為內部實現的差異,os.tick 與 os.clock()的返回值並不完全一致。