lua基础之时间

本文介绍Lua中的os.date和os.time函数用法,包括格式化日期时间、获取当前时间和计算时间差等操作。同时展示了如何使用socket.gettime获取系统纪元时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

os.date()

  • 原型:os.date ([format [, time]])
  • 解释:返回一个按format格式化日期、时间的字串或表。
  1. 省略time会使用当前时间作为time
  2. 两个参数都省略则按当前系统的设置返回格式化的字符串,做以下等价替换 os.date() <=> os.date(“%c”)
  3. 如果format以 “!” 开头,则按格林尼治时间进行格式化。
  4. 如果format是一个 “t” **,将返一个带year(4位),month(1-12), day (1–31), hour (0-23), min (0-59),sec (0-61),wday (星期几, 星期天为1), yday (年内天数)和isdst (是否为日光节约时间true/false)的带键名的表.
  5. 如果format不是 “t” **,os.date会将日期格式化为一个字符串,具体如下:
格式符含义具体示例
%a一星期中天数的简写os.date(“%a”) => Fri
%A一星期中天数的全称(Wednesday)
%b月份的简写(Sep)
%B月份的全称(May)
%c日期和时间(09/16/98 23:48:10)
%d一个月中的第几天(28)[0 - 31]
%H24小时制中的小时数(18)[00 - 23]
%I12小时制中的小时数(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)
%%字符串’%’(%)
*t返回一个table,里面包含全部的数据hour 14
  • 例子:
prettyNow = os.date('%A, %B %d %Y at %I:%M:%S %p') => Saturday, January 09 2018 at 12:42:19 AM.
pretty911 = os.date('%A, %B %d %Y at %H:%M UTC', 1000215960) => Tuesday, September 11 2001 at 13:46 UTC.
prettyDerived911 = os.date('%A, %B %d %Y at %H:%M UTC', os.time({year=2001, month=9, day=11, hour=13, minute=46})) => Tuesday, September 11 2001 at 13:46 UTC.
os.date('*t') => Returns a {table} representing the current local date / time.
os.date('!*t') => Returns a {table} representing the current UTC date / time.

os.time()

  • 原型
    os.time ([table])

  • 描述
    在不带参数的情况下返回当前时间,或者返回表示给定表指定的日期和时间的时间。 此表必须有字段年、月和日,并且可能有字段小时、分钟、秒和 isdst

year (4 digit year)
month (month 0-12)
day (1-31)
hour (24-hour 0-23)
min (minute 0-59)
sec (second 0-59)
isdst (daylight saving time, boolean true or false)
  • 例子
currentLocalTime = os.time(os.date('*t'))
currentUTCTime = os.time(os.date('!*t'))
inAnHour = os.time(os.date('*t')) + 3600
tomorrowSameTime = os.time(os.date('*t')) + 86400
secondsSince911=os.time(os.date('*!t')) - os.time({year=2001, month=9, day=11, hour=13, minute=46})

os.clock()

返回程序使用的 CPU 时间的近似值(以秒为单位),典型用途是基准测试


os.difftime()

  • 原型
    os.difftime (t2, t1)

  • 描述
    计算以秒为单位的时间差


os.setlocale

  • 原型
    os.setlocale(locale [, category])

  • 描述
    设置程序的当前区域,函数返回设置以后该项最新的值,如果失败则返回nil。

-- 首先查询一下初始的区域设置
print(os.setlocale(nil)) 
-- 设置成中文简体区域
print(os.setlocale("chs")) 
-- 现在只将数字部分设置成中文简体区域
print(os.setlocale("chs","numeric")) 
-- 现在将时间部分设置成英文区域
print(os.setlocale("eng","time")) 

socket.gettime

  • 原型
    socket.gettime()

  • 描述
    返回以秒为单位的时间,相对于系统纪元(自 1970 年 1 月 1 日起的 Unix 纪元时间 (UTC) 或自 1601 年 1 月 1 日起的 Windows 文件时间 (UTC))。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值