1. 程式人生 > >lua 時間函式os.time()和os.date()

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

但是怎麼獲取時區呢?

在開發過程中遇到時間轉換問題,主要是以此記錄