LUA时间和日期
时间和日期相关库函数
时间戳:os.time ([table])
无参数时返回以纪元时间1970年1月1日8时0分0秒到当前时间的秒数
可选参数table:以时间表作为参数返回该表所描述的时间戳
时间表有效字段:{year = 1970, month = 1, day = 1, hour = 8, min = 0, sec = 0}
时间戳差值:os.difftime (t1, t2)
返回两个时间戳的差值
参数t:os.time()返回的时间戳
CPU时钟:os.clock ()
返回当前程序占用的CPU时钟
格式化输出时间:os.date ([format [,time])
返回格式化日期时间或表,无参数时默认按%c格式返回当前日期时间字符串。
可选参数format:格式化表示形式 (类似C语言的prinrf),可选参数time:指定时间戳,无参数默认为当前时间戳。
当format参数为"*t"时会返回当前日期时间表,字段如下:
do for k,v in pairs (os.date("*t")) do print (k, v) end end --[[ sec 58 秒 min 18 分 hour 21 小时 day 2 日 month 1 月 year 2022 年份 wday 1 周当中的天,周日为1 yday 2 年当中的天 --]]
格式控制符表
%a -- 星期简写 %A -- 星期全称 %b -- 月份简写 %B -- 月份全称 %c -- 操作系统默认的日期时间完整格式 %d -- 一个月中的第几天 %H -- 小时,24小时制 %I -- 小时,12小时制 %j -- 一年中的第几天 %m -- 月份 %M -- 分钟 %p -- AM/PM %S -- 秒数 %w -- 星期 %W -- 一年中的第几周 %x -- 日期,日/月/年 %X -- 时间,时/分/秒 %y -- 年份,两位数形式 %Y -- 年份,完整形式 %z -- 时区 %% -- 转义百分号
例如:
print (os.date ("%Y-%m-%d %A %H:%M:%S"))
输出结果:2022-01-02 Sunday 21:53:51,格式化控制字符串后面无参数时默认为当前时间,当然也可以指定时间戳。
时间和日期的自动归一演示
do t = os.date("*t") -- 获取当前时间表 print (os.date("%Y-%m-%d")) -- 2022-01-03 t.day = t.day + 57 -- 日期增加57天 print (os.date("%Y-%m-%d", os.time(t))) -- 按指定格式输出以t表为时间戳的日期,2022-03-01 end