<Lua程序设计(第二版)>书摘-13 日期与时间

资料摘自《Lua程序设计(第二版)》

在Lua中,函数time和date提供了所有的日期和时间功能。
如果不带任何参数调用time函数,它会以数字形式返回当前的日期和时间。如果用一个table作为参数调用它,它会返回一个数字,表示该table中所描述的日期和时间。这种table具有以下有效字段:
year    一个完整的年份
month   01~12
day     01~31
hour    00~23
min     00~59
sec     00~59
isdst   一个布尔值,true表示夏令时
前三个字段是必须要有的,其它字段默认为中午(12:00:00)。在里约热内卢运行的一个UNIX系统上,可以写这样一个示例:
print(os.time({year=1970,month=1,day=1,hour=0}))  -->10800
print(os.time({year=1970,month=1,day=1,hour=0,sec=1}))  -->10801
print(os.time({year=1970,month=1,day=1}))  -->5400
其中,10800是3个小时的秒数,5400则是10800加上12小时的秒数。
函数date是time的一个反函数,它可以将一个表示日期和时间的数字转换成某些高级的表现形式。其第一个参数是格式字符串,指定了期望的表示形式;第二个参数是日期和时间的数字,默认当前日期和时间。
为了生成一个日期table,可以使用格式字符串"*t"。例如,调用os.date("*t",906000490)会返回下面这个table:
{year=1998,month=9,day=16,yday=259,wday=4,hour=23,min=48,sec=10,isdst=false}
注意,除了用于os.time的那些字段之外,os.date所创建的table中还包含了星期数(wday,1表示星期天)和一年中的第几天(yday,1是一月一日)。
而对于其他格式字符串,os.date会将日期格式化为一个字符串,这个字符串是传入格式字符串的一个复制,但其中的某些特殊标记被替换成了时间和日期信息。所有的标记都以"%"开头,并伴随一个字母,例如:
print(os.date("today is %A,in %B")) -->today is Tuesday,in May
print(os.date("%x",906000490))  -->09/16/1998
所有的表现形式取决于当前的区域设置。例如,当前区域设为“巴西-葡萄牙语”时,%B会变成"setembro",而%x变为"16/09/98"。
下表列出了所有的标记及其含义,这些标记说明中使用的示范时时间为1998年9月16日(星期三)23:48:10。对于数字值,表中也列出了它们的有效范围:
%a  一星期中天数的简写(例如:Wed)
%A 一星期中天数的全称(例如:Wednesday)
%b 月份的简写(例如:Sep)
%B 月份的全称(例如:September)
%c  日期和时间(例如:09/16/98 23:48:10)
%d  一个月中的第几天(16)[01~32]
%H  24小时制中的小时数(23)[00~23]
%I  12小时制中的小时数(11)[01~12]
%j  一年中的第几天(259)[001~366]
%M  分钟数(48)[00~59]
%m  月份数(09[01~12]
%p  "上午(am)"或"下午(pm)"
%S  秒数(10)[00~59]
%w  一星期中第几天(3)[0~6=星期天~星期六]
%x  日期(例如:09/16/98)
%X  时间(例如:23:48:10)
%y  两位数的年份(98)[00~99]
%Y  完整的年份(1998)
%%  字符'%'
如果不带任何参数调用date函数,它会使用格式%c,即以一种合理的格式表示完整的日期和时间信息。另外,%x、%X和%c会根据不同的区域和系统而发生变化。如果需要一种固定的表示形式,例如mm/dd/yyyy,可以使用显式的格式字符串"%m/%d/%Y"。
函数os.clock会返回当前CPU时间的秒数,一般可用于计算一段代码的执行时间:
local x = os.clock()
local s = 0
for i=1,100000 do
    s = s + i
end
print(string.format("elapsed time:%.2f\n",os.clock() - x))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值