lua os.xxx()函数使用

1.os.date参数
格式 描述 示例
os.date("%a") abbreviated weekday name  Sun
os.date("%A") full weekday name Sunday
os.date("%b") abbreviated month name  Jul
os.date("%B") full month name July
os.date("%c") date and time 07/27/14 17:42:09
os.date("%d") day of the month 27
os.date("%H") hour, using a 24-hour clock (23) [00-23] 17
os.date("%I") hour, using a 12-hour clock (11) [01-12] 5
os.date("%M") minute (48) [00-59] 42
os.date("%m") month (09) [01-12] 7
os.date("%p") either "am" or "pm" (pm) PM
os.date("%S") second (10) [00-61] 9
os.date("%w") weekday (3) [0-6 = Sunday-Saturday] 0
os.date("%x") date 07/27/14
os.date("%X") time (e.g., 23:48:10) 17:42:09
os.date("%Y") full year (1998) 2014
os.date("%y") two-digit year (98) [00-99] 14

local nowTime = os.date("%Y-%m-%d %H:%M:%S")
print(nowTime)
2.os.time 和 os.date
> print(os.time())

1337060663


> print(os.date())
05/15/12 13:44:30


os.time返回的是从1970年x月x日到现在经过的秒数,而不是毫秒。os.date返回的是按照一定格式输出的日期字符串或table。

3.指定一个时间,格式化为从1970年x月x日到现在经过的秒数。用在活动结束时间等
os.time({day=9, month=11, year=2017, hour=0, minute=0, second=0}) 
4.os.clock()
 
  

前言

Lua api函数的总结要告一段落了,从今天开始我要回归到Lua,我们来一起看看在lua函数里有哪些函数我们会经常用到,现在我们来接触第一个函数os.clock()。还是先上例子,之后我们来一起分析一下。

内容


os.clock()

  • 解释:返回一个程序使用CPU时间的一个近似值。

Usage

  • 首先我们来新建一个文件,文件命名为为clocktest.lua编写如下代码:
-- 之前有好多操作,忽略不看
-- ...
-- ...
print("os.clock example :\n");
-- 记录开始时间
local starttime = os.clock();                           --> os.clock()用法
print(string.format("start time : %.4f", starttime));

-- 进行耗时操作
local sum = 0;
for i = 1, 100000000 do
      sum = sum + i;
end

-- 记录结束时间
local endtime = os.clock();                           --> os.clock()用法
print(string.format("end time   : %.4f", endtime));
print(string.format("cost time  : %.4f", endtime - starttime));
  • 结果

clock.png

总结

  • 从使用上来看这个函数很简单,程序开始的时候调用一次,结束的时候调用一次,然后做差值就可以了。
  • 我们结果上来看一下,为什么start time不是0呢,原因就是我第一次调用clock()的地方并不是程序的开始,之前还做了一些其他的操作,导致了这里有0.027s的误差。
  • 需要注意的是这个lua函数的实现是调用了c语言的函数函数库,实现代码如下:
    static int os_clock (lua_State *L) {  
    lua_pushnumber(L, ((lua_Number)clock())/(lua_Number)CLOCKS_PER_SEC);  
    return 1;  
    }
    其中有个CLOCKS_PER_SEC值,在不同平台有着不同的定义,所以一定要注意函数的溢出问题,程序运行时间太长的话,使用clock有可能就会返回负数。
  • 还有很多讨论是关于clock在不同平台的表现不同,在多线程会有影响等问题的,其实我也做了一些测试,有些结果和讨论中的一致,有些是相反的,这也许与平台相关吧,比如我举一个例子,在两个clock调用之间加入Sleep(1000),那么Sleep的时间是算入clock的(Windows平台+VS2008),但是很多帖子是说测试结果表明,Sleep这段时间不算入clock。
  • 下面我附上一些关于clock讨论帖的地址,仅供参考:


作者:AlbertS
链接:http://www.jianshu.com/p/46e0d70746cc
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/themagickeyjianan/article/details/51792409
今日推荐