lua 差值 日期 lua時間戳和日期轉換及踩坑

2021-10-13 13:25:46 字數 1451 閱讀 3167

介紹lua的日期函式常用方法及我的乙個踩坑。

時間戳轉日期

os.date("%y%m%d%h",unixtime)

--os.date("%y%m%d%h",1534435200) 2018081700

日期轉時間戳

---指定日期的時間戳

os.time()

--1534435200

當前時間戳

os.time()

格式佔位符

--時間格式 yyyymmddhhmmss

print(os.date("%y%m%d%h%m%s", os.time()))

轉成年月日介面

function tool.formatunixtime2date(unixtime)

if unixtime and unixtime >= 0 then

local tb = {}

tb.year = tonumber(os.date("%y",unixtime))

tb.month =tonumber(os.date("%m",unixtime))

tb.day = tonumber(os.date("%d",unixtime))

tb.hour = tonumber(os.date("%h",unixtime))

tb.minute = tonumber(os.date("%m",unixtime))

tb.second = tonumber(os.date("%s",unixtime))

return tb

endend

當然,如果你只需要拿天數進行比較,可以使用tonumber(os.date("%d",unixtime))

踩坑日誌

不建議採用以下方式計算日期

function tool.formatdiffunixtime2tb(diffunixtime)

if diffunixtime and diffunixtime >= 0 then

local tb = {}

---一天的秒數86400

tb.dd = math.floor(diffunixtime / 60 / 60 / 24)

tb.hh = math.floor(diffunixtime / 3600) % 24

tb.mm = math.floor(diffunixtime / 60) % 60

tb.ss = math.floor(diffunixtime % 60)

return tb

endend

比如這兩個零點日期,通過上述介面計算的dd是非常接近的!

日期unix timestamp

計算值2018/8/16 23:59:59

17759.66665509259

2018/8/17 00:00:01

17759.66667824074

轉換計算工具

參考資料

lua 差值 日期 Lua日期與時間操作

os.time 返回當前系統的日曆時間 os.date 返回本地化的時間字串,這裡是 11 28 08 17 23 37 os.date x os.time 返回自定義格式化時間字串 完整的格式化引數 這裡是 11 28 08 os.clock 返回執行該程式cpu花去的時鐘秒數,這裡是1156.7...

lua 差值 日期 在lua中優雅的操作日期和時間

曾幾何時,在lua裡面對時間進行操作總是充滿了辛酸和不堪,最終下定決心使用乙個優雅的方式實現對日期的處理,在大多數情況下對日期時間的處理主要是 根據已知時間和偏移量以及時間單位計算出乙個新的時間 設計思路 1.借助於lua提供的os.date和os.time實現 2.用os.date把給定的時間從字...

Lua時間戳和日期轉換

os.date y m d h unixtime os.date y m d h 1534435200 2018081700 指定日期的時間戳 os.time 1534435200os.time 時間格式 yyyymmddhhmmss print os.date y m d h m s os.tim...