日期时间字符串转时间戳
1 function Parse_yyyyMMdd_hhmmss(dtStr) 2 --local str = "1970-01-01 08:00:03" 3 local pattern = "(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)" 4 local index1, index2, year, month, day, h, m, s = string.find(dtStr, pattern) 5 6 local dateTime = { year = year, month = month, day = day, hour = h, min = m, sec = s } 7 return os.time(dateTime) 8 end
比如: 每天首次登录可领取一次奖励, 判断是否当天的首次登录
1 function NowBetweenDateTime(beginDtTimeStr, endDtTimeStr) 2 local utcSec1 = Parse_yyyyMMdd_hhmmss(beginDtTimeStr) 3 local utcSec2 = Parse_yyyyMMdd_hhmmss(endDtTimeStr) 4 5 local nowTimeStamp = os.time() 6 return nowTimeStamp >= utcSec1 and nowTimeStamp <= utcSec2 7 end
比如: 活动在每天的10:00开始, 13:30结束, 判断是否在活动时间内
1 function NowBetweenDayTime(beginTimeStr, endTimeStr) 2 local pattern = "(%d+):(%d+)" 3 4 local nowDateTime = os.date("*t", os.time()) 5 local nowDaySec = nowDateTime.hour * 3600 + nowDateTime.min * 60 6 7 local index1, index2, h, m = string.find(beginTimeStr, pattern) 8 local beginDaySec = h * 3600 + m * 60 9 if nowDaySec < beginDaySec then return false end 10 11 index1, index2, h, m = string.find(endTimeStr, pattern) 12 local endDaySec = h * 3600 + m * 60 13 if nowDaySec > endDaySec then return false end 14 15 return true 16 end
比如: 排行榜每天0点刷新, 距离刷新还剩多长时间
1 function LeftTime() 2 local dt = os.date("*t", os.time()) 3 local leftSec = 24 * 3600 - dt.hour * 3600 + dt.min * 60 + dt.sec 4 return leftSec 5 end
比如:活动每周三开启一次,计算下次活动的开启日期
1 function NextWdayDateTime(wday) 2 local timeStamp = os.time() 3 4 --今天周几 5 local dt = os.date("*t", timeStamp) 6 if 1 == dt.wday then dt.wday = 7 7 else dt.wday = dt.wday - 1 end 8 9 local dayDiff = dt.wday - wday + 7 10 timeStamp = timeStamp + dayDiff * 24 * 3600 11 return os.date("*t", timeStamp) 12 end
比如:距离上次登录隔了多少天
1 function DayDiff(lastTimeStamp, nowTimeStamp) 2 local diff = (nowTimeStamp - lastTimeStamp) / (24 * 3600) 3 return diff 4 end