• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

lua的几个时间相关处理函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  随手写的,项目中没用,不一定对,只作参考。

--游戏时间相关函数

local gt = {}

local math = math
local ONE_MINUTE = 60
local ONE_HOUR = ONE_MINUTE * ONE_MINUTE
local ONE_DAY = ONE_HOUR * 24
local ONE_WEEK = ONE_DAY*7

--本地时间2000-01-01 00:00对应UTC
local sec_2000 = os.time{year=2000,month=1,day=1,hour=0,min=0,sec=0}
local refresh_2000 = sec_2000 + ONE_HOUR*4
local monday_2000 = os.time{year=2000,month=1,day=3,hour=0,min=0,sec=0} --第一个周一

-- 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 > 0 then
        return math.ceil( sec/ONE_DAY)
    end
    
    return 1  --周日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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Lua学习之基础篇十Lua常见的语法规则发布时间:2022-07-22
下一篇:
RichLabel基于Cocos2dx+Luav3.x发布时间:2022-07-22
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap