一、時間的三種格式
1、用數值表示時間值 (時間戳)
用數字值來表示時間值,
實際上時間值的本質就是一個數字值。
例如:
d = 1131286477
這里的 1131286477 是一個以秒為單位的 格林威志時間(gmt),注意不同時區的時差
2、用字符串表示時間 (string)
用字符串來來表示時間。
例如:
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)
用table對象來表示時間
例如:
d = {year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false}
--同樣表示2005年11月6日 22點18分30秒,其中isdst=false表示不使用夏令時
--夏時制,夏時令(Daylight Saving Time:DST),又稱“日光節約時制”和“夏令時間”,是一種為節約能源而人為規定地方時間的制度,在這一制度實行期間所采用的統一時間稱為“夏令時間”。一般在天亮早的夏季人為將時間提前一小時,可以使人早起早睡,減少照明量,以充分利用光照資源,從而節約照明用電。各個采納夏時制的國家具體規定不同。目前全世界有近110個國家每年要實行夏令時。
我們可以這樣訪問時間列表 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)格式的時間(時間戳轉換為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返回字符串
os.date 的用法與 string.ftime 完全相同
例如:
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") --返回當前時間分鍾部份的字符串格式
五、時間數值與字符串之間的轉換
請參考:string.time string.ftime 函數用法
六、計算時間值間隔
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()的返回值並不完全一致。
local getTime = os.date(“%c”);
其中的%c可以是以下的一種:(注意大小寫)
%a | abbreviated weekday name (e.g., Wed) |
%A | full weekday name (e.g., Wednesday) |
%b | abbreviated month name (e.g., Sep) |
%B | full month name (e.g., September) |
%c | date and time (e.g., 09/16/98 23:48:10) |
%d | day of the month (16) [01-31] |
%H | hour, using a 24-hour clock (23) [00-23] |
%I | hour, using a 12-hour clock (11) [01-12] |
%M | minute (48) [00-59] |
%m | month (09) [01-12] |
%p | either “am” or “pm” (pm) |
%S | second (10) [00-61] |
%w | weekday (3) [0-6 = Sunday-Saturday] |
%x | date (e.g., 09/16/98) |
%X | time (e.g., 23:48:10) |
%Y | full year (1998) |
%y | two-digit year (98) [00-99] |
%% | the character ‘%’ |
如獲取當前年月日時分秒:local date=os.date(“%Y-%m-%d %H:%M:%S”);