操作系统库定义在table os中,其中包含了文件操作函数、获取当前日期和时间的函数,以
及其它一些与操作系统相关的功能。对文件操作而言,这个库只提供了两个函数,一个是用
于文件改名的os.rename函数,另一个是用于删除文件的os.remove函数。
22.1日期和时间
在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).
print(os.time({year=1970,month=1,day=1,hour=7}))
函数date是一个反函数,它可以将一个表示日期和时间的数字转换成某些高级的表现形式。
其第一个参数是格式字符串,指定了期望的表示形式;第二个参数是日期和时间的数字,
默认为当前日期和时间。
如为了生成一个日期table,可以使用格式字符串"*t".注意:除了用于os.time的那些字段外,
os.date所创建的table中还包含了星期数(wday)和一年中的第几天(yday)。这个table中所
表示的时间是本机所在时区的时间。如果格式字符串是"!*t",那么table中所表示的时间是
格林尼治时间。
对于其它格式字符串,os.date会将日期格式化为一个字符串,这个字符串是传入格式字符
串的一个复制,但其中的某些特殊标记被替换成了时间和日期信息。所有的标记都以"%"开头,
并伴随一个字母。例如:
print(os.date("today is %A, in %B")) -->today is Tuesday, in May
下表列出了所有的标记及其含义;对于数字值,表中也列出了它们的有效范围:
%a 一星期中天数的简写
%A 一星期中天数的全称
%b 月份的简写
%B 月份的全称
%c 日期和时间(09/16/9823:48:10)
%d 一个月中的第几天[01-31]
%H 24小时制中的小时数[00-23]
%I 12小时制中的小时数[01-12]
%j 一年中的第几天[001-366]
%M 分钟数[00-59]
%m 月份数[01-12]
%p 上午am或下午pm
%S 秒数[00-59]
%w 一星期中的第几天[0-6]
%x 日期(09/16/98)
%X 时间(23:48:10)
%y 两位数的年份[00-99]
%Y 完整的年份(1998)
%% 字符%
如果不带任何参数调用date函数它会使用格式%c。如果需要一种固定的表示形式,可以使用
显示的格式字符串"%m/%d/%Y".
函数os.clock会返回当前CPU时间的秒数,一般可用于计算一点代码的执行时间。
22.2 其它系统调用
函数os.exit可终止当前程序的执行;
函数os.getenv可获取一个环境变量的值,并接受哦一个变量名,返回对应的字符串值:
print(os.getenv("HOME")) --> /home/lua
如果一个环境变量没有定义,则返回nil。
函数os.execute可运行一条系统命令,它需要接受一个命令字符串,并返回一个错误代码。
如可用以下函数创建新目录:
function createDir(dirname)
os.execute("mkdir".. dirname)
end