lua os.time os.date 使用总结

lua os.time os.date 使用总结,第1张

lua官方手册描述如下

函数有两种调用方式

 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})))


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11806867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存