--lua中操作系统库os提供4个函数os.clock、os.time、os.date、os.difftime
--@return number 程序消耗的Cpu时间,-秒为单位的浮点数(精确3位小数,即毫秒)
local clock_stamp1 = os.clock()
for i = 1, 100000 do
local j = i + 1
end
--输出程序循环的消耗时间
--print(os.clock() - clock_stamp1)
--@return number 当前时间的时间戳(以秒为基本单位的整型数,在Windows和POSIX相对1970.1.1)
local time_stamp = os.time()
--print(time_stamp)
--@return table{year = 2020, month = 1, day(一个月中第几天) = 2, yday(一年中第几天) = 2, wday(一个星期中第几天) = 4, hour = 14, min = 52, sec = 10, isdst(是否使用夏令时) = false} 当前时间
local date = os.date("*t")
for k,v in pairs(date) do
--print(k .. ":", v)
end
--日期转时间:date -> time
local time_stamp1 = os.time(date)
--在忽略程序运行时间小于1s时相等
--print(time_stamp1 == time_stamp)
--时间转日期,os.date的第二个参数不写(==nil)都是表示当前时间的时间戳
time_stamp1 = os.time({year = 1970, month = 2, day = 1})
local date1 = os.date("*t", nil)
date1 = os.date("*t", time_stamp1)
for k,v in pairs(date1) do
print(k .. ":", v)
end
--时间转日期的格式化 @return string
print(os.date("year:%Y month:%m day:%d yday:%j wday:%a hour:%H min:%M sec:%S"))
--其他常用指示符,%W(一年中第几周),%X(时间,例如:15:45:45)
--返回两个时间的插值 在Windows和POSIX等系统中等于两个时间戳相减
--@return number 以秒为单位
--@param time1 number 秒
--@param time2 number 秒
print(os.difftime(os.time(), time_stamp1))
--时区的计算
function getCurTimeZone()
--获得0时区的时间 os.date("!*t")
local zeroZoneTime = os.time(os.date("!*t"))
local curZoneTime = os.time()
return os.difftime(curZoneTime, zeroZoneTime) / (60 * 60)
end
print(getCurTimeZone())