分享

os库-时间函数(转)

 汇英四方 2014-04-03

一、时间的三种格式

1、用数值表示时间值

用数字值来表示时间值,
实际上时间值的本质就是一个数字值。

例如:

d = 1131286477

这里的 1131286477 是一个以秒为单位的 格林威志时间(gmt),注意不同时区的时差

2、用字符串表示时间

用字符串来来表示时间。

例如:

d = "2005-11-06 22:18:30" --2005年11月6日 22点18分30秒
d = "11/06/2005 22:18:30" --即2005年11月6日 22点18分30秒

3、时间的列表格式

用table对象来表示时间

例如:

d = {year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false}
--同样表示2005年11月6日 22点18分30秒,其中isdst=false表示不使用夏令时

我们可以这样访问时间列表 d.year = 2005;

二、取得数值(number)格式的时间值

time = os.time()

返回一个标准的number(数值)格式的时间值,这也是最原始的时间值
os.time()返回的时间是以秒为单位的。

1、获取当前时间数值

time = os.time();
--如果没有指定任何参数,则返回当前时间

2、通过table参数指定时间,获取指定的时间数值

time = os.time(tab);

通过一个table参数,指定一个时间,返回时间的数值格式.

例如:

local tab = {year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false}
--year表示年,month表示月,day表示日期,hour表示小时,min表示分钟,sec表示秒,isdst表示是否夏令时

time = os.time(tab) -->返回值为1131286710

三、取得列表(table)格式的时间

tab = os.date("*t",time)

可以将一个数值格式的时间转换为字符串或者列表
其中第一个参数指定返回的格式,如果第一个参数指定为"*t" 则返回一个table格式的时间。
第二个参数指定一个时间数值(以秒为单位)

1、获取当前时间的table格式

tab = os.date("*t")

如果不指定os.date的第二个参数,则返回当前时间的table表示格式

2、通过时间数值,获取指定时间的table格式

tab = os.date("*t", time)

通过os.date函数的第二个参数指定一个时间数值。

例如:

local tab = os.date("*t", 1131286710);

--返回值 tab 的数据 {year=2005, month=11, day=6, hour=22,min=18,sec=30}
--year表示年,month表示月,day表示日期,hour表示小时,min表示分钟,sec表示秒,isdst表示是否夏令时
--tab成包括一些其他的成员 tab.yday 表示一年中的第几天 tab.wday 表示星期几(星期天为1)

time = os.time(tab) -->返回值为1131286710

四、取得时间的字符串(string)格式

tab = os.date(format,time)

实际上与取得table格式的时间一样,同样是使用os.date参数,不同的是第一个参数
如果第一个参数不是"*t" os.date返回字符串

关于format参数使用的格式化语法,请参考:string.ftime格式化语法
os.date 的用法与 string.ftime 完全相同

例如:

win.consoleOpen()

print(  os.date("today is %A, in %B")  )
print(  os.date("%x", 906000490)  )

--输出类似这样的字符串 09/16/1998

1、获取当前时间的字符串(string)格式

如果不指定os.date的第二个参数,则返回当前时间的table表示格式

例如:

str= os.date("*x")

2、通过时间数值,获取指定时间的(string)格式

通过os.date函数的第二个参数指定一个时间数值。

例如:

str= os.date("*x",1131286710)

3、获取时间的指定部份的(string)格式

例如:

str = os.date("%M") --返回当前时间分钟部份的字符串格式

五、时间数值与字符串之间的转换

请参考:string.time string.ftime 函数用法

六、计算时间值间隔

int = os.difftime(t2,t1);

t2,t1都是数值格式的时间值,返回值也是一个数值表示间隔的时间。
参数以及返回的时间值都是以秒为单位的数值格式。

local tab = {year=2005, month=11, day=6, hour=22,min=18,sec=30,isdst=false}
t1 = os.time(tab)

tab.day = tab.day +1;--前进一天
t2 = os.time(tab)

int = os.difftime(t2,t1);
win.messageBox(int.."秒","时间差"

七、系统时钟

int = os.tick();
读取系统时钟,以毫秒为单位。表示从系统启动到当前时刻所过去的毫秒数。

int = os.clock()
读取系统时钟,以秒为单位。表示从系统启动到当前时刻所过去的秒数。

注意

因为内部实现的差异,os.tick 与 os.clock()的返回值并不完全一致。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多