Lua time [os.time()] [os.date()]
核心方法
os.time()
os.time([table])
: 按给定的参数(table格式)的内容返回一个时间值(数字)
- 不传参的话返回当前时间转化成秒数的结果。(从格林尼治时间1970.01.01 00:00:00开始计时)
print(os.time()) ========== result: 1561033140
- 其中参数table中可以包含的字段有:year, month, day, hour, min, sec, isdst(夏令时),其他字段将会被忽略。可以使用该方法可以指定时间。
-
print(os.time({year =2019, month = 06, day = 20, hour = 20, min = 19, sec = 00})) ========== result: 1561033140
-
print(os.time({year =1919, month = 06, day = 20, hour = 20, min = 19, sec = 00})) ========== result: nil
- 注意:如果填了参数,
year
,month
,day
则为必填参数,少填任意一个都会报错
-
os.date()
-
os.date ([format [, time]])
. 返回format格式化日期、时间的字串或表。 -
如果
format
以!
开头,则格式化使用的时间为格林尼治时间。 -
如果format不是
*t
,os.date会将日期格式化为一个字符串。 -
如果format是
*t
,将返一个带year(4位)(%Y),month(1-12), day (1–31), hour (0-23), min (0-59),sec (0-61),wday (星期几, 星期天为1), yday (年内天数)和isdst (是否为日光节约时间true/false)的带键名的表。 -
举例:
-
print(os.date("%Y%m%d%H%M%S", os.time())) print(os.date("!%Y%m%d%H%M%S", os.time())) ========== result: 20191015170052 20191015090052
-
print(os.date("%Y-%m-%d-%H-%M-%S", os.time())) ========== result: 2019-10-15-17-00-52
-
print(os.date("%Y-%m-%d %H:%M:%S", os.time())) ========== result: 2019-10-15 17:00:52
-
local data = os.date('*t', os.time()) for k, v in pairs(data) do print(k, v) end ========== result: wday 3 yday 288 sec 6 min 53 day 15 month 10 isdst false year 2019 hour 16
-
-
os.date()
格式符:式符 含义 示例 []
表示范围%a 一星期中天数的简写 (Fri) %A 一星期中天数的全称 (Wednesday) %b 月份的简写 (Sep) %B 月份的全称 (May) %c 日期和时间 (09/16/98 23:48:10) %d 一个月中的第几天 (28)[0 - 31] %H 24小时制中的小时数 (18)[00 - 23] %I 12小时制中的小时数 (10)[01 - 12] %j 一年中的第几天 (209)[01 - 366] %M 分钟数 (48)[00 - 59] %m 月份数 (09)[01 - 12] %P 上午或下午 (pm)[am - pm] %S 一分钟之内秒数 (10)[00 - 59] %w 一星期中的第几天 (3)[0 - 6 = 星期天 - 星期六] %W 一年中的第几个星期 (2)0 - 52 %x 日期 (09/16/98) %X 时间 (23:48:10) %y 两位数的年份 (16)[00 - 99] %Y 完整的年份 (2016) %% 字符串’%’ (%)
拓展用法
- 计算时区
-
print(os.difftime(os.time(), os.time(os.date('!*t', os.time()))) / 3600) ======= result: 8.0
-
- 获取指定月份总共有多少天
-
function GetTotalDaysByYearAndMonth(_year, _month) local _date = {} _date.year = _year _date.month = _month + 1 _date.day = 0 local _days= os.date("%d",os.time(_date)) --下个月的第0天即当月的最后一天 return _days end print(GetTotalDaysByYearAndMonth(2000, 2))
-