lua的几个时间相关处理函数
随手写的,项目中没用,不一定对,只作参考。
--游戏时间相关函数
local gt = {}
local math = math
local ONE_MINUTE =
local ONE_HOUR = ONE_MINUTE * ONE_MINUTE
local ONE_DAY = ONE_HOUR *
local ONE_WEEK = ONE_DAY*
--本地时间2000-01-01 00:00对应UTC
local sec_2000 = os.time{year=,month=,day=,hour=,min=,sec=}
local refresh_2000 = sec_2000 + ONE_HOUR*
local monday_2000 = os.time{year=,month=,day=,hour=,min=,sec=} --第一个周一
-- Compute the difference in seconds between local time and UTC.
function gt.get_timezone()
local now = os.time()
return os.difftime(now, os.time(os.date("!*t", now)))
end
local TIMEZONE = gt.get_timezone()
--这是获取2000-01-01 00:00:00以来所过的天数,根据系统时区变化
function gt.get_day_from_2000()
return math.floor( (ev.time - sec_2000)/ONE_DAY )
end
--这是获取2000-01-01 00:00:00以来所过的秒数,根据系统时区变化
function gt.get_second_from_2000()
return ev.time - sec_2000
end
--这是获取2000-01-01 04:00:00以来所过的天数,根据系统时区变化
function gt.get_refresh_day_from_2000()
return math.ceil( (ev.time - refresh_2000)/ONE_DAY )
end
--这是获取2000-01-01 00:00:00以来所过的周数,根据系统时区变化
function gt.get_week_from_2000()
return math.ceil( (ev.time - monday_2000)/ONE_WEEK )
end
--获取当天的0时0分0秒的时间
function gt.get_begin_of_day()
local local_t = ev.time + TIMEZONE
return local_t - local_t%ONE_DAY
end
--获取下分钟的时间
function gt.get_next_minite()
return ev.time - ev.time%ONE_MINUTE + ONE_MINUTE
end
--获取下小时的时间
function gt.get_next_hour()
return ev.time - ev.time%ONE_HOUR + ONE_HOUR
end
--获取下一次的4时0分0秒的时间
function gt.get_next_refresh_time()
local pass = (ev.time - refresh_2000)%ONE_DAY --相对04:00的已过秒数
return ev.time - pass + ONE_DAY
end
--获得星期几 1星期一
--TODO 这里星期天是7
function gt.get_weekday()
local sec = (ev.time - monday_2000)%ONE_WEEK
if sec > then
return math.ceil( sec/ONE_DAY)
end
return --周日00:00才会这样,算周一
end
--获取当天的秒数,范围是(0 <= sec < 24 * 3600)
function gt.get_second_of_day()
return (ev.time + TIMEZONE)%ONE_DAY
end
--比较a-b时间是否>=num天
function gt.compare_days(a,b,num)
local ds = math.floor((a - sec_2000)/ONE_DAY) - math.floor((b - sec_2000)/ONE_DAY)
return ds >= num or false
end
return gt
lua的几个时间相关处理函数的更多相关文章
- Lua 学习笔记(五)函数
函数的定义:在Lua中,函数是一种对语句和表达式进行抽象的主要机制. 一.函数基本用法 在Lua中, 1.函数既可以完成某项特定的任务.(被视为一条语句) 2.也可以 ...
- 【小白学Lua】之Lua变长参数和unpack函数
一.简介 Lua的变长参数和unpack函数在实际的开发中应用的还挺多的,比如在设计print函数的时候,需要支持对多个变量进行打印输出,这时我们就需要用到Lua中的变长参数和unpack函数了. 二 ...
- 《Lua程序设计》第5章 函数 学习笔记
Lua为面向对象式的调用也提供了一种特殊的语法——冒号操作符.表达式o.foo(o, x)的另一种写法是o:foo(x),冒号操作符是调用o.foo时将o隐含地作为函数的第一个参数.Lua可以调用C语 ...
- Lua学习笔记(6): 函数
Lua的函数 函数用于简化程序,当某些工作需要重复执行的时候就可以使用函数减轻工作量(虽然复制粘贴也行) 语法: function 函数名(参数列表) 函数体 return 返回值 end --结束标 ...
- cocos进阶教程(1)Lua调用自定义C++类和函数的最佳实践
第一层:纯C环境下,把C函数注册进Lua环境 a.lua 文件 )) a.c 文件 #include <lua.h> #include <lualib.h> #include ...
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践[转]
Cocos2d-x下Lua调用C++这事之所以看起来这么复杂.网上所有的文档都没讲清楚,是因为存在5个层面的知识点: 1.在纯C环境下,把C函数注册进Lua环境,理解Lua和C之间可以互相调用的本质 ...
- 【转】Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
转自:http://segmentfault.com/blog/hongliang/1190000000631630 关于cocos2d-x下Lua调用C++的文档看了不少,但没有一篇真正把这事给讲明 ...
- [lua] 你所不知道的lua nil值在可变参数函数中怎么处理!
在lua中, 问题1:如果你在可变参数...中传入若干个参数,其中有的参数要带nil,这时怎么解决呢?(比如local function _test(...) end _test(1, nil, ...
- ulua c#调用lua中模拟的类成员函数
项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,2 ...
随机推荐
- TCP总结
TCP协议 <计算机网络>谢希仁 及笔记 TCP 的那些事儿(上):http://coolshell.cn/articles/11564.html TCP 的那些事儿(下):htt ...
- Visual Studio写的项目在 IIS 服务器上运行的两种简单方法
首先需要PC上开启了IIS服务,相关方法网上很多,也很简单 第一种:直接在项目中操作 1.创建一个项目,然后右击选中项目,右击,单击属性,打开项目属性标签页面 如图,选择Web标签,在服务器栏目中选中 ...
- C# 窗口传值的方法
方法一: A to B 设置FormB 为 带参数的构造函数 public Form2( object msg) { InitializeComponent(); } 方法二: A to B 定义一 ...
- Dev GridControl 按条件合并相同单元格
Dev 默认的合并方式,只要(垂直方向)相邻两个单元格的值相同都会进行合并,这种方式并不是最优的,所以需要在进行合并的过程中进行判断. 方式如下: 1:先设置需要合并的列为允许合并 OptionsVi ...
- JS类百度的动态提示框思路及完成
参考的代码来自这里: http://www.jb51.net/article/28075.htm 不过说实话,这个网站太烂了,不适合看代码,另外写代码的人是个大牛,但是却没有模块化思想,所以朕不高兴直 ...
- mysql source命令导入sql文件效率分析和索引整理
Query OK, 24918 rows affected (0.90 sec)Records: 24918 Duplicates: 0 Warnings: 0 Query OK, 24923 r ...
- C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)
1.使用ZXint.Net生成带logo的二维码 /// <summary> /// 生成带Logo的二维码 /// </summary> /// <param name ...
- share js 分享代码
(function(){ var $doc = $(document); var shareHandlers = { 'twitter': function(prop,shareUrl){ var D ...
- mysql 存储引擎MYSIAM和INNODB特性比较
事物:MYISAM不支持事物,MyISAM类型的表强调的是性能,其执行数度比InnoDB 类型更快.如果不考虑事物,大量的select和insert适合MYISAM表 锁:MYISAM支持表锁 ...
- 迭代器(iterator) 与 traits 编程技法
看了候哥的<STL源码剖析>的迭代器那一章,在这里将思路稍微疏理一下 迭代器 迭代器模式的定义:提供一种方法,在不需要暴露某个容器的内部表现形式情况下,使之能依次访问该容器中的各个元素. ...