您的位置:首页 > 编程语言 > Lua

Lua时间转换

2015-06-15 12:55 330 查看

转载: http://blog.csdn.net/kanelu/article/details/4678903#t1

一、时间的三种格式

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()的返回值并不完全一致。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: