有两种表现形式,一种是通过数字,另外一种方式是通过日期表:year,month,day,hour,min,sec.wday,yday,isdst
1、函数
1.1 os.time
print(os.time())
local date = os.time()
local day2year = 365.242
local sec2hour = 3600
local sec2day = sec2hour * 24
local sec2year = sec2day * day2year
print(date // sec2year + 1970)
print(date % sec2day // sec2hour)
print(date % sec2hour // 60)
print(date % 60)
输出:
1641709237
2022.0
6
20
37
年月日形式转为数字形式
print(os.time({year = 2022, month=1, day = 9, hour = 14, min = 22, sec = 20}))
输出:
1641709340
1.2 os.date
将数值形式转为表形式或者字符串形式。第一个参数是格式 化字符串,第二个是数值形式的日期,如果没有提供,表示当前时间。
t = os.date("*t")
print(t)
print(t.year, t.month, t.day, t.yday, t.wday, t.hour, t.min, t.sec, t.isdst)
输出:
table: 00000000006fa1b0
2022 1 10 10 2 21 13 48 false
字段允许值范围列表
year | 全年 |
month | 1-12 |
day | 1-31 |
hour | 0-23 |
min | 0-59 |
sec | 0-60 |
wday | 1-7 |
yday | 1-366 |
函数指令
%a | 简写的周名 |
%A | 全写的周名 |
%b | 简写的月名 |
%B | 全写的月名 |
%c | 日期和时间 |
%d | 一个月的第几天 |
%H | 小时,24小时制 |
%I | 小时,12小时制 |
%j | 一年的第几天 |
%m | 月 |
%M | 分钟 |
%p | am或者pm |
%S | 秒 |
%w | 周几 0-6表示Sunday-Saturday |
%W | 一年的第几周 |
%x | 日期 |
%X | 时间 |
%y | 两位数的表示的年 |
%Y | 全年表示形式 |
%z | 时区 |
%% | 百分号 |
当使用os.date创建日期表,其字段都是在允许范围内的。但是当把日期表赋值给os.time时,字段并不需要满足要求。
t = os.date("*t")
print(os.date("%Y/%m/%d", os.time(t)))
t.day = t.day + 40
print(os.date("%Y/%m/%d", os.time(t)))
输出为:
2022/01/10
2022/02/19
t = os.date("*t")
print(os.date("%Y/%m/%d", os.time(t)))
t.day = t.day - 40
print(t.day, t.month)
t = os.date("*t", os.time(t))
print(t.day, t.month)
输出为:
2022/01/10
-30 1
1 12
1.3 os.difftime
计算两个时间差,以秒为单位。
1.4 os.clock
返回CPU时间的秒数。