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

lua语言里面dwtime不是当前时间,当前时间是os.time。

from = os.time() --当前时间,单位秒

to = os.time({year=2012,month=1,day=1,hour=1,min=30}) --指定时间,单位秒

sub = to-from --差。

Lua是一个小巧的脚本语言。是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个研究小组,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所组成并于1993年开发。 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有 *** 作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存