【转】lua Date和Time

time和date两个函数在Lua中实现所有的时钟查询功能。函数time在没有参数时返回当前时钟的数值。(在许多系统中该数值是当前距离某个特定时间的秒数。)当为函数调用附加一个特殊的时间表时,该函数就是返回距该表描述的时间的数值。这样的时间表有如下的区间:


year


a full year


month


01-12


day


01-31


hour


01-31


min


00-59


sec


00-59


isdst


a boolean, true if daylight saving

前三项是必需的,如果未定义后几项,默认时间为正午(12:00:00)。如果是在里约热内卢(格林威治向西三个时区)的一台Unix计算机上(相对时间为1970年1月1日,00:00:00)执行如下代码,其结果将如下。

-- 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)

函数data,不管它的名字是什么,其实是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}

不难发现该表中除了使用到了在上述时间表中的区域以外,这个表还提供了星期(wday,星期天为1)和一年中的第几天(yday,一月一日为1)除 了使用 "*t" 格式字符串外,如果使用带标记(见下表)的特殊字符串,os.data函数会将相应的标记位以时间信息进行填充,得到一个包含时间的字 符串。(这些特殊标记都是以 "%" 和一个字母的形式出现)如下:

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年九月16日,星期 三,23:48:10。返回值为数字形式的还列出了它们的范围。(都是按照英语系的显示描述的,也比较简单,就不烦了)


%a


abbreviated weekday name (e.g., Wed)


%A


full weekday name (e.g., Wednesday)


%b


abbreviated month name (e.g., Sep)


%B


full month name (e.g., September)


%c


date and time (e.g., 09/16/98 23:48:10)


%d


day of the month (16) [01-31]


%H


hour, using a 24-hour clock (23) [00-23]


%I


hour, using a 12-hour clock (11) [01-12]


%M


minute (48) [00-59]


%m


month (09) [01-12]


%p


either "am" or "pm" (pm)


%S


second (10) [00-61]


%w


weekday (3) [0-6 = Sunday-Saturday]


%x


date (e.g., 09/16/98)


%X


time (e.g., 23:48:10)


%Y


full year (1998)


%y


two-digit year (98) [00-99]


%%


the character ‘%‘

事实上如果不使用任何参数就调用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))

时间: 2025-01-17 22:09:27

【转】lua Date和Time的相关文章

lua Date和Time

time和date两个函数在Lua中实现所有的时钟查询功能.函数time在没有参数时返回当前时钟的数值.(在许多系统中该数值是当前距离某个特定时间的秒数.)当为函数调用附加一个特殊的时间表时,该函数就是返回距该表描述的时间的数值.这样的时间表有如下的区间: year a full year month 01-12 day 01-31 hour 01-31 min 00-59 sec 00-59 isdst a boolean, true if daylight saving 前三项是必需的,如果

lua三底漆:lua转让c/c++库(动态链接模式)

dll按功能luaL_openlib出口,然后lua使用package.loadlib导入库函数,基本就是这么个过程,以下上代码来说明一切. #include "stdafx.h" #ifdef __cplusplus extern "C"{ #endif #include "lua.h" #include "lualib.h" #include "lauxlib.h" #ifdef __cplusplus

lua入门之二:c/c++ 调用lua及多个函数返回值的获取

当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 同样类型的栈来交互. C 函数从栈中获取她的參数.调用结束后将返回结果放到栈中.为了区分返回结果和栈中的其它的值,每一个 C 函数还会返回结果的个数(the  function  returns  (in  C)  the  number  of  results  it  is leaving on the stack.). // luacallcpp.cpp : 定义控制台应用程序的入口点. // #include "stdafx.

lua入门之一:c/c++ 调用lua

lua和c / c++的数据交互通过栈进行, 操作数据时,首先将数据拷贝到"栈"上,然后获取数据,栈中的每个数据通过索引值进行定位,索引值为正时表示相对于栈底的偏移索引,索引值为负时表示相对于栈顶的偏移索引,索引值以1或 - 1为起始值,因此栈顶索引值永远为 - 1, 栈底索引值永远为1 . "栈"相当于数据在lua和c / c++之间的中转地.每种数据都有相应的存取接口 . --region *.lua --Date --此文件由[BabeLua]插件自动生成 p

lua入门之一:c/c++ 调用lua及多个返回值得获取

当 Lua 调用 C 函数的时候,使用和 C 调用 Lua 相同类型的栈来交互.C 函数从栈中获取她的参数,调用结束后将返回结果放到栈中.为了区分返回结果和栈中的其他的值,每个 C 函数还会返回结果的个数(the  function  returns  (in  C)  the  number  of  results  it  is leaving on the stack.). // luacallcpp.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h&

lua时间函数操作和对比代码,os.date() os.time()

time和date两个函数在Lua中实现所有的时钟查询功能.函数time在没有参数时返回当前时钟的数值.(在许多系统中该数值是当前距离某个特定时间的秒数.)当为函数调用附加一个特殊的时间表时,该函数就是返回距该表描述的时间的数值.这样的时间表有如下的区间: year a full year month 01-12 day 01-31 hour 01-31 min 00-59 sec 00-59 isdst a boolean, true if daylight saving 前三项是必需的,如果

[Lua基础]操作系统库——Date,Time,Clock

基本概念 UNIX时间:或称POSIX时间是UNIX或类UNIX系统使用的时间表示方式:从协调世界时1970年1月1日0时0分0秒起至现在的总秒数,不包括闰秒. 时钟:在计数系统中,所有的波形都与一个基本时序波型同步,称之为时钟(clock).时钟是周期波,每两个脉冲之间的间隔等于一个位时间. RTC:大部分PC机中有两个时钟源,他们分别叫做RTC和OS(操作系统)时钟.RTC(Real Time Clock,实时时钟)也叫做CMOS时钟,它是PC主机板上的一块芯片(或者叫做时钟电路),它靠电池

ngx lua模块源码简单解析

ngx lua模块源码简单解析分类: nginx 2014-07-11 11:45 2097人阅读 评论(0) 收藏 举报nginxlua数据结构架构目录(?)[+]对nginx lua模块的整个流程,原理简单解析.由于nginx lua模块相关配置,指令,API非常多,所以本文档只以content_by_lua指令举例说明. 读本文档最好配合读源码. 不适合对nginx和lua一点都不了解的人看.1.相关配置详细配置见 https://github.com/openresty/lua-ngin

LUA实现单词替换功能

背景描述 编程或者文档处理过程, 经常遇到需要将一个单词修改为另外一个单词的情况, 例如 命名为 shall 修改 为 should. 使用工具实现, 则比较方便,不容易出错, 解放双手. 需求规格 对于某个文件夹中的所有文本文件(txt), 将某个单词替换为目标单词. 实现思路 对于替换的单词映射, 在配置文件config.lua进行设置, 存储一个表,表中每一行 对应  src vocanbulary 和 dest vocanbulary 对应工具的主题逻辑代码在 replace.lua中实