lua 時間函式os.time()和os.date()
Lua標準庫中提供了關於時間函式 os.time()和os.date(),這兩個函式需要注意的地方就是加入了時區的概念
os.time() 得到是當前時間的距離1970.1.1.08:00時間的秒數,如果傳入的引數小於這個時間,那麼就會得到一個,秒數就是負數,會得到一個空值
os.time()
1. 不傳參的話返回當前時間轉化成秒數的結果
local time2 = os.time()
2. 傳參返回指定時間轉化秒數的結果
local time = os.time({year =2016, month = 11, day =23, hour =17, min =17, sec = 00})
print(“====================time=,”,time) -- 結果列印 1479892620
tips:任何一個時區,在相同的時間,同時呼叫os.time() 返回的結果都是一樣的
os.date() 把時間戳轉化成可顯示的時間字串
1. dump(os.date(“*t”,0),“--->”) -- 格式化成表的形式顯示
result:
"--->" = {
"day" = 1 --日
"hour" = 8 --小時
"isdst" =false --是否夏令時
"min" = 0 --分鐘
"month" = 1 --月
"sec" = 0 --秒
"wday" = 5 --星期5
"yday" = 1 --當年已過天數
"year" = 1970 --年
}
2.print("===============os.date()==",os.date("%Y-%m-%d%H:%M:%S",1479892620))
Result:
===============os.date()== 2016-11-23﹎17:17:00
tips:如果伺服器返回一個時間戳,客戶端想要轉換成可讀樣式,需要考慮到時區問題,因為是按照本地時區轉換的,如果本地時區跟伺服器所在時區不一致,就會導致時間顯示錯誤,一般解決辦法就是 加上時區差即可。ps:如果有夏令時,則需要加上3600s
但是怎麼獲取時區呢?
在開發過程中遇到時間轉換問題,主要是以此記錄