• function day_step(old_day,step) local y,m,d if("0" ~= string.sub(old_day,6,6)) then m=string.sub(old_day,6,7) else m=string.sub(old_day,7,7) end if("0" ~= string.sub(old_day,9,9))...
function day_step(old_day,step)    local y,m,d   if("0" ~= string.sub(old_day,6,6)) then      m=string.sub(old_day,6,7)   else      m=string.sub(old_day,7,7)   end   if("0" ~= string.sub(old_day,9,9)) then      d=string.sub(old_day,9,10)   else      d=string.sub(old_day,10,10)   end   y=string.sub(old_day,0,4)      local old_time=os.time{year=y,month=m,day=d}   local new_time=old_time+86400*step   local new_day=os.date("*t",new_time)   local res=""   if(tonumber(new_day.day)<10 and tonumber(new_day.month)<10)then      res=new_day.year.."-".."0"..new_day.month.."-".."0"..new_day.day   elseif tonumber(new_day.month)<10 then      res=new_day.year.."-".."0"..new_day.month.."-"..new_day.day      elseif tonumber(new_day.day)<10 then      res=new_day.year.."-"..new_day.month.."-".."0"..new_day.day   else      res=new_day.year.."-"..new_day.month.."-"..new_day.day   end   return resend
转载于:https://www.cnblogs.com/yanzi-meng/p/11274438.html
展开全文
• --根据日期获取星期几 function getWeekNum(strDate) local ymd = Split(strDate,"-") t = os.time({year=tostring(ymd[1]),month=tostring(ymd[2]),day=tostring(ymd[3])}) local weekNu...


--根据日期获取星期几
function getWeekNum(strDate)
local ymd = Split(strDate,"-")
t = os.time({year=tostring(ymd[1]),month=tostring(ymd[2]),day=tostring(ymd[3])})
local weekNum = os.date("*t",t).wday  -1
if weekNum == 0 then
weekNum = 7
end
return weekNum
end

ngx.say(getWeekNum("2018-04-25"))

--根据一个日期获取下几天，dayChange参数为下几天
function getNextDay(strDate,dayChange)
local _startDate = Split(startDate,"-")
local time=os.time({year=tostring(_startDate[1]), month=tostring(_startDate[2]), day=tostring(_startDate[3])})+dayChange*86400 --一天86400秒
return (os.date('%Y',time).."-"..os.date('%m',time).."-"..os.date('%d',time))
end

ngx.say(getNextDay("2018-04-25", 1))

--计算一个时间段中有几天
function getDays(startDate, endDate)
local startDateTab = Split(startDate,"-")
local endDateTab = Split(endDate,"-")
numDay1 = os.time({year=tostring(startDateTab[1]), month=tostring(startDateTab[2]), day=tostring(startDateTab[3])})
numDay2 = os.time({year=tostring(endDateTab[1]), month=tostring(endDateTab[2]), day=tostring(endDateTab[3])})
return (numDay1-numDay2)/(3600*24)+1;
end

ngx.say(getDays("2018-04-25", "2018-04-20"))

--遍历一个值是否在数组中
function IsInTable(value, tbl)
for k,v in ipairs(tbl) do
if v == value then
return true;
end
end
return false;
end

--获取前10分钟
ngx.print(os.date("%Y%m%d%H%M%S",os.time()-600))


展开全文
• lua的时间和日期函数 2012-08-27 10:01:32| 分类： Lua | 标签：lua 时间 函数 |举报|字号 订阅 下载LOFTER客户端 --获取当前的时间戳，单位是秒。 time=os.time(); print(time); --获得当前的时间...


lua的时间和日期函数

2012-08-27 10:01:32|  分类： Lua |  标签：lua  时间  函数   |举报|字号 订阅

下载LOFTER客户端
--获取当前的时间戳，单位是秒。
time=os.time();
print(time);

--获得当前的时间table，有year,month,day,hour,min,sec等元素。
tab=os.date("*t",time); --或直接tab=os.date("*t"); --tab是table的简写。
print(tab.year, tab.month, tab.day, tab.hour, tab.min, tab.sec);

--获得当前的时间字符串，形如"08/27/12"。
str=os.date("%x",time); --或直接使用str=os.date("*x");
print(str);

参考：
os库-时间函数：http://blog.csdn.net/kanelu/article/details/4678903

转载于:https://www.cnblogs.com/archoncap/p/4922754.html
展开全文
• 最近在做Lua脚本的时候，用到了Lua日期和时间函数，发现其功能强大，学习一下！在Lua中，函数time和 data提供了所有的日期和时间的功能，下面将这两个函数分开学习。 time函数： 如果不带任何参数调用time,它会...
最近在做Lua脚本的时候，用到了Lua的日期和时间函数，发现其功能强大，学习一下！在Lua中，函数time和data提供了所有的日期和时间的功能，下面将这两个函数分开学习。

time函数：

如果不带任何参数调用time,它会返回一个数字，表示当前的日期和时间，改数字为某一时刻到此刻的秒数。
如： local current_time = os.time(); -- 返回的结果可能是 1503365680 这样一串数字
time还可以用一个table作为一个参数调用它，它会返回从某一时刻都table中时刻的秒数，table参数内容
year   一个完整的年份
month 01 - 12
day 01 - 31
hour 00 - 23
min 00 - 59
sec 00 - 59
isdst 一个布尔值，true表示夏令时
其中年月份必须填写，不可省略，后面的其他字段可填可不填。
思考：既然只需要填写年月日就可以获得一个时刻都年月日的秒数，那么lua默认表中的时分秒为多少呢？
于是笔者做了以下测试：
local time1 = os.time{year = 2000, month = 1, day = 1};
print(time1); -- 结果为946 699 200
local time2 = os.time{year = 2000, month = 1, day = 1, hour = 12};
print(time2); -- 结果为946 699 200
local time3 = os.time{year = 2000, month = 1, day = 1, hour = 12, min = 1};
print(time3); -- 结果为946 699 260
local time4 = os.time{year = 2000, month = 1, day = 1, hour = 12, min = 1, sec = 1};
print(time4); -- 结果为946 699 261
通过测试可以看出，Lua中当你参数table值填年月日时，Lua默认hour = 12, min = 0, sec = 0

data函数：

函数data是time的一个反函数，它可以将一个表示日期和时间的数字转换成某些高级的表现形式。
该函数有两个参数：
第一个参数为格式字符串，指定了期望的表示形式;
第二个参数是日期和时间的数字，默认为当前日期和时间。<可不填>
其中第一个参数中，date函数支持以下这些格式：
%a 一个星期中天数的简写(如：Wed)
%A 一个星期中天数的全称(如: Wednesday)
%b 月份的简写(如: Sep)
%B 月份的全称(如：September)
%c 日期和时间(如: 08/22/2017 10:50:05)
%d 一个月中的第几天(22) [0 - 31]
%H 24小时中的小时数(15) [0 - 23]
%I 12小时中的小时数(8)[1 - 12]

%j 一年中的第几天(259)[1 - 366]

%M 分钟数 (48) [0 - 59]

%m 月份数 (09) [1 - 12]
%p "上午(am)"或"下午(pm)" (如: pm)
%S 秒数(10) [0 - 59]
%w 一个星期中的第几天(3) [0 - 6 周天-周六]
%x 日期(如：08/22/17)
%X 时间(如：10:50:05)
%y 两位数的年份(17) [00 - 99]
%Y 完整的年份(2017)
%% 字符'%'
除了以上格式外，data函数还阔以通过字符串"*t"，其返回一个table如
local date = os.date("*t", os.time());
--结果为date = {year = 2017, month = 8, day = 22, yday = 234, wday = 3,

hour = 10, min = 46, sec = 52, isdst = false}

应用：

我们在Lua中经常会用到这两个函数来格式化我们的日期和时间，然后在自由组合自己想要的格式，下面来写几个接口实践下：

local fmt_date = function(year, month, day, fmt)
if (fmt == "DD/MM/YY") then
return string.format("%02d/%02d/%02d", day, month, year);
elseif (fmt == "MM/DD/YY") then
return string.format("%02d/%02d/%02d", month, day, year);
else
return string.format("%02d/%02d/%02d", year, month, day);
end
end

local fmt_hms = function(hour, min, sec, TIME_24H_Flag)
if (nil ~= sec) then
assert((nil ~= hour) and (nil ~= min));

if (TIME_24H_Flag) then
return string.format("%02d:%02d:%02d", hour, min, sec);
else
local h = math.floor(tonumber(hour));

if (h < 12) then
if (0 == h) then h = 12; end
return string.format("%02d:%02d:%02d AM", h, min, sec);
else
if (12 == h) then h = 24; end
return string.format("%02d:%02d:%02d PM", h-12, min, sec);
end
end
elseif (nil ~= min) then
assert(nil ~= hour);

if (TIME_24H_Flag) then
return string.format("%02d:%02d", hour, min);
else
local h = math.floor(tonumber(hour));

if (h < 12) then
if (0 == h) then h = 12; end
return string.format("%02d:%02d AM", h, min);
else
if (12 == h) then h = 24; end
return string.format("%02d:%02d PM", h-12, min);
end
end
else
assert(nil ~= hour);

if (TIME_24H_Flag) then
return string.format("%02d", hour);
else
local h = math.floor(tonumber(hour));

if (h < 12) then
if (0 == h) then h = 12; end
return string.format("%02d:00 AM", h);
else
if (12 == h) then h = 24; end
return string.format("%02d:00 PM", h-12);
end
end
end
end

local fmt_time = function(wday_flag, year, mon, mday, hour, min, sec)
if ((nil ~= year) and (nil ~= mon) and (nil ~= mday) and (nil ~= hour) and (nil ~= min) and (nil ~= sec)) then
if (("boolean" == type(wday_flag)) and (wday_flag)) then
local week = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
local w = os.date("%w", os.time{year=year, month=mon, day=mday});
local day = math.floor(tonumber(w)) + 1;

return string.format("%s %s %s", fmt_date(year, mon, mday), fmt_hms(hour, min, sec), week[day]);
else
return string.format("%s %s", fmt_date(year, mon, mday), fmt_hms(hour, min, sec));
end
end

if ((nil ~= year) and (nil ~= mon) and (nil ~= mday) and (nil == hour) and (nil == min) and (nil == sec)) then
if (("boolean" == type(wday_flag)) and (wday_flag)) then
local week = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
local w = os.date("%w", os.time{year = year, month = mon, day = mday});
local day = math.floor(tonumber(w)) + 1;

return string.format("%s %s", fmt_date(year, mon, mday), week[day]);
else
return string.format("%s", fmt_date(year, mon, mday));
end
end

if ((nil == year) and (nil == mon) and (nil == mday) and (nil ~= hour) and (nil ~= min)) then
return string.format("%s", fmt_hms(hour, min, sec));
end
end

--测试
local time = os.date("%Y/%m/%d %H:%M:%S", os.time());
local year, mon, mday, hour, min, sec = string.match(time, "(%d+)/(%d+)/(%d+) (%d+):(%d+):(%d+)");
print(fmt_time(false, year, mon, mday));  --2017/08/22
print(fmt_time(false, nil, nil, nil, hour, min, sec)); --11:09:13 AM


展开全文
• 创建日期：2019-04-14 函数 函数有一个修饰符local 定义一个函数 function max(num1,num2) if(num1>num2) then return num1 else return num2 end end 调用一个函数 print(max(10,20))--20 ...
• os.date (format[,time]])返回一个字符串或者一个包含日期和时间的表，格式由format给定。 如果给出time参数，格式化输出time描述的时间(看|os.time|)，否则data格式化当 前时间。 如果format开始于’!’，日期...
• time和date两个函数Lua中实现所有的时钟查询功能。函数time在没有参数时返回当前时钟的数值。(在许多系统中该数值是当前距离某个特定时间的秒数。)当为函数调用附加一个特殊的时间表时，该函数就是返回距该表描述...
• time和date两个函数Lua中实现所有的时钟查询功能。函数time在没有参数时返回当前时钟的数值。（在许多系统中该数值是当前距离某个特定时间的秒数。）当为函数调用附加一个特殊的时间表时，该函数就是返回距该表...
•     Lua语言的标准库提供了两个用于操作日期和时间的函数，这两个函数在C语言标准库中也存在，提供的是同样的功能。虽然这两个函数看上去很简单，但依旧可以基于这些简单的功能完成很多复杂的工作。     Lua...
• 最近的工作是要求写一个任务系统，需要在特定日期重置任务，或者在天数后重置任务。 这就延伸出一个问题，如何得知条件天数后的日期。... 其实lua的时间函数十分强大，可以用以下方法: 1.算出当时间，以表表...
• 解释：返回一个按format格式化日期、时间的字串或表。 usage## 参数格式： 由原型可以看出可以省略第二个参数也可以省略两个参数，只省略第二个参数函数会使用当前时间作为第二个参数，如果两个参数都省略则按...
• lua时间戳和日期转换及踩坑介绍lua日期函数常用方法及我的一个踩坑。时间戳转日期#Copyos.date("%Y%m%d%H",unixtime)--os.date("%Y%m%d%H",1534435200) 2018081700日期转时间戳#Copy---指定日期的时间戳os.time({...
• 获得前一天的日期函数 1 function day_step(old_day,step) 2 local y,m,d 3 if("0" ~= string.sub(old_day,6,6)) then 4 m=string.sub(old_day,6,7) 5 else 6 m=string.sub(old_day...
• 介绍lua日期函数常用方法及我的一个踩坑。时间戳转日期os.date("%Y%m%d%H",unixtime)--os.date("%Y%m%d%H",1534435200) 2018081700日期转时间戳---指定日期的时间戳os.time({day=17, month=8, year=2018, hour=0, ...
• 网上lua的源码很少，知识也很少，最近做一个功能校验日期格式时，需要知道日期是否连续，即是指定日期前后几天的日期。 原理是获取指定日期到标准日期的秒数，然后加减日期的天数的秒数，在根据标准日期转换为想要...
• -- 获取当前的格林尼治时间 print(os.time()) -- 获取当前时间的字符串表示，形如：11/28/08 10:28:37 print(os.date()) ... -- 获取当前日期的字符串表示，形如：11/28/08 print(os.dat...
• time函数– 获取当前的格林尼治时间 os.time() – 获取当前时间的字符串表示 示例：11/28/08 10:28:37os.date() – 获取当前日期的字符串表示 示例：11/28/08os.date(“%x”, os.time()) – 获取当前时间的字符...
• os.date函数定义 原型：os.date ([format [, time]]) 解释：返回一个按format格式化日期、时间的字串或表。 lua源码中os.date的注释如下： --- --- Returns a string or a table containing date and time, ...
• -----lua函数os.time源码见 loslib.c 中的 int os_time (lua_State *L)lua中无参数调用：os.time()直接返回time(NULL)，即UNIX时间戳，也即UTC时间 1970-01-01 00:00:00 至今的秒数lua中有参数调用：os.time({year=,...
• 介绍lua日期函数常用方法及我的一个踩坑。 时间戳转日期 os.date("%Y%m%d%H",unixtime) --os.date("%Y%m%d%H",1534435200) 2018081700 日期转时间戳 ---指定日期的时间戳 os.time({day=17, month=8, year=2018, ...