os.time() 得到是当前时间的距离1970.1.1.08:00时间的秒数,如果传入的参数小于这个时间,那么就会得到一个,秒数就是负数,会得到一个空值。
年月日时分秒的格式化取值如下
os.date("%Y-%m-%d%H:%M:%S",os.time())
输出:
2021-06-02 11:31:12
当前时间数据
os.date("*t", os.time())
返回当前时区的信息集
sec 13
isdst false
hour 11
min 29
year 2021
month 6
wday 4
day 2
yday 153
注意使用format "*t"返回的table中wday如果是1表示星期天,而使用通用格式时%w用0表示星期天。
如果format以“!”开头,则按格林尼治时间进行格式化。
应用:通过传入两个时间戳,计算当前是第几天,跨天时间点为 xx
-- 返回time1和time2相差的天数 limit为每天的分割点 默认5点
function GetDaysIndexByLimit(time1, time2, limit)
limit = limit or 5
local _time1 = time1<time2 and time1 or time2
local _time2 = time2>time1 and time2 or time1
local days = 0
local data1 = os.date("*t", _time1);
if data1.hour < limit then
days = days + 1
end
data1.hour = limit
data1.min = 0
data1.sec = 0
local time1_five = os.time(data1)
local data2 = os.date("*t", _time2);
if data2.hour >= limit then
days = days + 1
end
data2.hour = limit
data2.min = 0
data2.sec = 0
local time2_five = os.time(data2)
local d_time = os.difftime(time2_five, time1_five)/86400
days = days + d_time
return days
end