第一版是为 Lua 5.0 编写的。虽然在很大程度上仍然适用于更高版本,但还是有一些差异。
第四版针对 Lua 5.3,可在 亚马逊 和其他书店购买。
购买本书,您还可以帮助支持 Lua 项目。
用 Lua 编程 | ||
第三部分。标准库 第 22 章。操作系统库 |
两个函数,time
和 date
,执行 Lua 中的所有日期和时间查询。
time
函数在不带参数调用时,会返回当前日期和时间,编码为一个数字。(在大多数系统中,该数字是自某个历元以来的秒数。)当使用一个表调用时,它会返回表示该表所述日期和时间的数字。此类日期表具有以下重要字段
year | 一个完整的年份 |
month | 01-12 |
day | 01-31 |
hour | 00-23 |
min | 00-59 |
sec | 00-59 |
isdst | 一个布尔值,如果采用夏令时,则为 true |
前三个字段是强制性的;其他字段在未提供时默认为中午(12:00:00)。在运行于里约热内卢(格林尼治时间以西三小时)的 Unix 系统(历元为 1970 年 1 月 1 日 00:00:00 UTC)中,我们有以下示例
-- obs: 10800 = 3*60*60 (3 hours) 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}) --> 54000 (obs: 54000 = 10800 + 12*60*60)
date
函数尽管其名称如此,但它实际上是 time
函数的一种逆向操作:它将表示日期和时间的数字转换回某种更高级别的表示形式。它的第一个参数是一个格式字符串,描述我们想要的表示形式。第二个参数是数字日期时间;它默认为当前日期和时间。
要生成一个日期表,我们使用格式字符串 "*t"
。例如,以下代码
temp = os.date("*t", 906000490)生成表
{year = 1998, month = 9, day = 16, yday = 259, wday = 4, hour = 23, min = 48, sec = 10, isdst = false}请注意,除了
os.time
使用的字段外,os.date
创建的表还提供星期几(wday
,1 为星期日)和一年中的第几天(yday
,1 为 1 月 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 | 缩写星期名称(例如,星期三 ) |
%A | 完整星期名称(例如,星期三 ) |
%b | 缩写月份名称(例如,9 月 ) |
%B | 完整月份名称(例如,9 月 ) |
%c | 日期和时间(例如,09/16/98 23:48:10 ) |
%d | 月份中的天数(16 )[01-31] |
%H | 使用 24 小时制的小时(23 )[00-23] |
%I | 使用 12 小时制的小时(11 )[01-12] |
%M | 分钟(48 )[00-59] |
%m | 月份(09 )[01-12] |
%p | "am" 或 "pm" (pm ) |
%S | 秒(10 )[00-61] |
%w | 星期(3 )[0-6 = 星期日-星期六] |
%x | 日期(例如,09/16/98 ) |
%X | 时间(例如,23:48:10 ) |
%Y | 完整年份(1998 ) |
%y | 两位数年份(98 )[00-99] |
%% | 字符 `% ´ |
如果不带任何参数调用 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))
版权所有 © 2003–2004 Roberto Ierusalimschy。保留所有权利。 |