Lua中日期和时间的表示方式
方式1:数字
一个整数:从固定纪元的固定日期后至今的秒数,
有以下字段:year、month、day、hour、min、sec、wday、yday和isdst,除isdst外都为整型数
- wday:本周的第几天(第一天为星期天)
- yday:当年的第几天(第一天为1月1日)
- isdst:布尔类型
- true:使用夏令时
- 注:日期表中不包括时区
os.time():获得数字型时间
- os.time([table]):获得table中所设定时间与 Jan 01,1970,0:00 UTC 所差的秒数,默认则是当前时间距 Jan 01,1970,0:00 UTC 的秒数
- 时间表上对日期的操作,
- 将时间表转化为数字型时间
- 将数字型时间转换为table
- 此时获得的时间表是对时间进行进位处理过后的时间表 ```lua -local timeNum = 906000490 local timeTable = os.date(“*t”, timeNum) —将数字型时间转换为时间表 print(os.date(“%Y/%m/%d”, os.time(timeTable))) —使用”%Y/%m/%d”格式输出当前时间 —输出:1998/09/17
timeTable.day = timeTable.day + 40 —将天数加40 print(os.date(“%Y/%m/%d”, os.time(timeTable))) —进行了归一化处理 输出:1998/10/27
<a name="SJDOm"></a>
# os.date():获得格式化日期
- **os.date([format][,time])**:将表示日期和时间的数字**转换**为**高级的表示形式**
- format:可选参数,描述**期望**表示形式**的格式化字符**
- **使用"*t":可生成一个完整的日期表**
| 获得日期表中字段的范围 | | | |
| --- | --- | --- | --- |
| year(年) | 一整年 | min(分钟) | 0~59 |
| month(月) | 1~12 | sec(秒) | 0~60(允许润秒存在) |
| day(日) | 1~31 | wday | 1~7 |
| hour(小时) | 0~23 | yday | 1~366 |
- time:可选参数,**数字形式**的日期和时间,不使用则默认为当前时间
| format中的指示符 | | | |
| --- | --- | --- | --- |
| %a | 星期几的简单写(如:Wed) | %M | 分钟(范围[00,59]) |
| %A | 星期几的全名(如:Wednesday) | %p | "am"或"pm" |
| %b | 月份的简写(如:Sep) | %S | 秒数(范围[00,60]) |
| %B | 月份的全名(如:September) | %w | 星期(0-6 → Sunday-Saturday) |
| %c | 日期和时间(如:09/16/98 23:48:10) | %W | 一年中的第几周(范围[00,53]) |
| %d | 一个月的第几天(范围[01,21]) | %x | 日期(如:09/16/98) |
| %H | 24小时制中的小时数(范围[00,23]) | %X | 时间(如:23:48:10) |
| %I | 12小时制中的小时数(范围[01,12]) | %y | 两位数的年份(范围[00,99]) |
| %j | 一年中的第几天(范围[001,365]) | %Y | 完整的年份(如:2008) |
| %m | 月份(范围[01,12]) | %z | 时区(如:-0300) |
| %% | 百分号 | | |
```lua
local timeNum=906000490 --设定数子型时间
print(os.date("%Y-%m-%d",timeNum)) --输出:1998-09-17
print(os.date("%Y/%m/%d")) --输出:2021/12/07
os.difftime():计算时间之差
- os.difftime(t1,t2):计算两个时间的差值,以秒为单位返回。
- t1、t2:为os.time所返回的的秒数
- 即t1-t2 ```lua local timeTable1 = {year = 2000, month = 1, day = 1, hour = 0} local timeTable2 = {year = 2015, month = 11, day = 20} local time1 = os.time(timeTable1) local time2 = os.time(timeTable2)
print(os.difftime(time1, time2)) —输出:-501336000.0 print(os.difftime(time2, time1)) —输出:501336000.0
os.clock():返回程序消耗的CPU时间
- os.clock():返回程序消耗CPU的时间(单位是秒)
- 注:比os.time有更高的进度,返回的是一个浮点数,有毫秒的精度
```lua
--典型的测试性能用法
local x = os.clock()
s = 0
for i = 1, 10000000 do
s = s + i
end
print(os.clock()) --输出:0.15