函数有两种调用方式
local t = os.time() 得到当前系统的时间戳(UTC +0)
local t = os.time({year = 2020,month = 2,day = 11,hour = 11,min = 24,sec =0 }) 得到2020-2-11 11:24:00 的时间戳(UTC+0),这里需要注意的是如果以table 方式传入当前的日历时间(年月日时分秒),函数会假定你传入的时间是本地时间(带时区),会在转化的时候减去系统的时区来进行转换!
源码如下
从上面的源码可以看出 不传入参数的时候使用的是C函数 time(NULL) 返回,带参数的时候通过mktime 来转化返回,mktime 就是带了时区转化!
lua的官方描述
这里支持了很多种格式化的方式来输出
这里主要记录两种方式的使用
local t = os.date("*t",time) 和 local t = os.date("!*t",time)
即是否带 "!" 的转化方式:如果没有带 "!" 则代表转化的时候需要进行时区的转换;带了则不需要进行时区的转换
源码如下
带了 "!" 的时候则 调用的是C函数 gmtime 简单的把time 时间戳转化成 日历时间,不带的时候就先调用了localtime 来进行转换,这里就把时区带进来进行转换的!
function isToday(timestamp)local today = os.date("*t")
local secondOfToday = os.time({day=today.day, month=today.month,
year=today.year, hour=0, minute=0, second=0})
if timestamp >= secondOfToday and timestamp <secondOfToday + 24 * 60 * 60 then
return true
else
return false
end
end
print(isToday(os.time({day=17, month=5, year=2012, hour=0, minute=0, second=0})))
print(isToday(os.time({day=17, month=5, year=2012, hour=16, minute=28, second=38})))
print(isToday(os.time({day=17, month=5, year=2012, hour=23, minute=59, second=59})))
print(isToday(os.time({day=16, month=5, year=2012, hour=23, minute=59, second=59})))
print(isToday(os.time({day=18, month=5, year=2012, hour=0, minute=0, second=0})))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)