关于时间的几个函数

-- 功能函数: 获取当前服务器时间, num型

function Player:get_cur_sys_time()

local last = self.time_span or 0

return os.time() - last

end

-- 获取现在的日期

function CommonFunc_getNowDate()

local nd = os.date("*t", g_player:get_cur_sys_time())

return {

year = nd.year,

month = nd.month,

day = nd.day,

hour = nd.hour,

minute = nd.min,

second = nd.sec

}

end

--把服务端发过来的stme 转换为秒为单位

function CommonFunc_ConvertDateToTime(stime)

local timeDate = os.date("*t",os.time())

-- Log(timeDate)

timeDate.year = stime.year

timeDate.month = stime.month

timeDate.day = stime.day

timeDate.hour = stime.hour or 0

timeDate.min = stime.minute or 0

timeDate.sec = stime.second or 0

-- Log(timeDate)

print("os.time",os.time(timeDate))

return os.time(timeDate)

end

-- 获取某年某月的天数

function UIShareToCircle:getMonthDays(year, month)

local time1 = CommonFunc_ConvertDateToTime({year=year, month=month, day=1})

-- local time1 = STime:dateToTime({year=year, month=month, day=1})

local nextYear, nextMonth = year, month + 1

if nextMonth > 12 then

nextYear = year + 1

nextMonth = 1

end

local time2 = CommonFunc_ConvertDateToTime({year=nextYear, month=nextMonth, day=1})

-- local time2 = STime:dateToTime({year=nextYear, month=nextMonth, day=1})

return math.floor((time2 - time1)/(24*3600))

end

--获取同一年内,从几月几日 到几月 总共的天数

function UIShareToCircle:calSpaceDaysByMonth( startDay, startMonth, startYear, endMonth, spaceDays)

for month = startMonth,endMonth,1 do

local monthDays = self:getMonthDays(startYear, month)

if month == startMonth then

spaceDays = monthDays - startDay

else

spaceDays = spaceDays  + monthDays

end

end

return spaceDays

end

--计算从上一次登录到现在,已经几天了

function UIShareToCircle:calInternalDays(startDate)

local spaceDays = 0 -- 间隔的天数

local startDate = startDate--测试数据*******************

local nowDate = CommonFunc_getNowDate() --当前的年月日

-- Log("62************",nowDate,startDate)

--先比较年

if nowDate.year > startDate.year then

for i = startDate.year,nowDate.year,1 do

if i == startDate.year then

spaceDays = self:calSpaceDaysByMonth( startDate.day, startDate.month, startDate.year, 12, spaceDays)

elseif i == nowDate.year then

spaceDays = self:calSpaceDaysByMonth( nowDate.day, 1, nowDate.year, nowDate.month, spaceDays)

else

for month =1,12,1 do

local monthDays =  self:getMonthDays(i, month)

spaceDays = spaceDays  + monthDays

end

end

end

else --比较月

if nowDate.month > startDate.month then

for i = startDate.month,nowDate.month,1 do

local monthDays =  self:getMonthDays(nowDate.year, i)

if i == startDate.month then

spaceDays = monthDays - startDate.day

elseif i == nowDate.month then

spaceDays = spaceDays + nowDate.day

else

spaceDays = spaceDays  + monthDays

end

end

else --比较日

spaceDays = nowDate.day - startDate.day

end

end

return spaceDays

end

-------------------------------------------------------------------------------

--获取当前时间

-------------------------------------------------------------------------------

function CommonFunc_getCurTime()

local tbCurTime = os.date("*t",g_Const_Time_Diff + os.time())

-- 将事件转化为符合中国人习惯的

if tbCurTime.wday == 1 then

tbCurTime.wday = 7

else

tbCurTime.wday = tbCurTime.wday - 1

end

return tbCurTime

end

-------------------------------------------------------------------------------

-- 时间的一些操作****

-- 判断一个时间是不是在两个时间之内

-- GuildBossOpenTime = {

-- ["start_timer"] = { {2014,1,1} },

-- ["end_timer"] = { {2099,12,31} },

-- ["day"] = {1,2,3,4,5},

-- ["hour"] = {0,24}

-- }

-------------------------------------------------------------------------------

function CommmonFunc_compTimer(tbData, tbCurTime)

tbCurTime = tbCurTime or CommonFunc_getCurTime()

local yFlag = CommonFunc_compDataBetData(tbData["start_timer"][1], tbData["end_timer"][1],

{tbCurTime["year"], tbCurTime["month"], tbCurTime["day"]} )

-- 如果周时间满足

local wFlag = tbData["day"]:has(tbCurTime["wday"])

-- 如果小时时间满足

local hFlag = CommonFunc_compDataBetHS(tbData["hour"][1], tbData["hour"][2], tbCurTime["hour"])

return yFlag and wFlag and hFlag

end

function CommonFunc_compDataBetData(tbData1,tbData2,detData)

if detData[1] < tbData1[1] or detData[1] > tbData2[1] then

return false

end

if detData[1] == tbData1[1] or detData[1] == tbData2[1] then

if detData[2] < tbData1[2] or detData[2] > tbData2[2] then

return false

end

if detData[2] == tbData2[2] or detData[2] == tbData2[2] then

if detData[3] < tbData1[3] or detData[3] > tbData2[3] then

return false

end

end

end

return true

end

----------------------------------------------------------------------------

-- 判断一个时间是不是在两个时间之内

function CommonFunc_compDataBetHS(tbData1,tbData2,detData)

if detData >= tbData1 and detData < tbData2 then

return true

end

return false

end

-- 获取活动剩余的天数

function UIActivity:getLeftTime(activity_tplt)

local leftDays = 0 -- 剩余的天数

local nowTb = CommonFunc_getCurTime() --当前的年月日

local startTb = activity_tplt.start_time --活动开始的时间

local endTb = activity_tplt.end_time --活动结束的时间

--先判断当前的时间在不在活动时间内

local tbDate = List({["start_timer"] = List({ {startTb.year,startTb.month,startTb.day,startTb.hour} }),

["end_timer"] = List({ {endTb.year,endTb.month,endTb.day,endTb.hour} }),

["day"] = List({1,2,3,4,5,6,7}),

["hour"] = List({0,24})

})

local inActivityFlag = CommmonFunc_compTimer(tbDate)

if inActivityFlag then

--先比较年

if endTb.year > nowTb.year then

for i = nowTb.year,endTb.year,1 do

if i == nowTb.year then

for month = nowTb.month,12,1 do

local monthDays =  self:getMonthDays(nowTb.year, month)

if month == nowTb.month then

leftDays = monthDays - nowTb.day

else

leftDays = leftDays  + monthDays

end

end

elseif i == endTb.year then

for month = 1,endTb.month,1 do

local monthDays = self:getMonthDays(i, month)

if month == endTb.month then

leftDays = leftDays + endTb.day

else

leftDays = leftDays  + monthDays

end

end

else

for month =1,12,1 do

local monthDays =  self:getMonthDays(i, month)

leftDays = leftDays  + monthDays

end

end

end

else --比较月

if endTb.month > nowTb.month then

for i = nowTb.month,endTb.month,1 do

local monthDays =  self:getMonthDays(endTb.year, i)

if i == nowTb.month then

leftDays = monthDays - nowTb.day

elseif i == endTb.month then

leftDays = leftDays + endTb.day

else

leftDays = leftDays  + monthDays

end

end

else --比较日

leftDays = endTb.day - nowTb.day

end

end

end

return string.format(StringRes["activity_copy_1"],leftDays)

end

时间: 2024-11-05 19:26:15

关于时间的几个函数的相关文章

Delphi获取当前系统时间(使用API函数GetSystemTime)

在开发应用程序时往往需要获取当前系统时间.尽管Y2K似乎已经平安过去,但在我们新开发的应用程序中还是要谨慎处理“时间”问题. 在<融会贯通--Delphi4.0实战技巧>(以下简称“该书”)第89页专门介绍了两种获取当前系统时间的方法,但这两种方法都存在不足或错误,以下就此进行讨论. 该书第一种方法是利用Time()函数获得当前系统时间,返回结果是TDateTime结构类型的变量.例如: procedure TForm1.Button2Click(Sender: TObject); var D

阻止在极短的时间重复执行某个函数

/** * 阻止在极短的时间重复执行某个函数中的代码 * @author wanlh * */ public class ReEventsController { private boolean isRepeatFlag = false; private MyRunnable mMyRunnable; private class MyRunnable implements Runnable{ @Override public void run() { // TODO Auto-generated

Oracle 时间,日期 类型函数及参数详解

ORACLE字符数字日期之间转化 Java代码 24 小时的形式显示出来要用 HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; to_date() function 1. 日期格式参数 含义说明 D 一周中的星期几 DAY 天的名字,使用空格填充到 9 个字符 DD 月中的第

140926●日期时间操作、数学函数操作、表单验证

日期时间操作:var d=new Date();var d=new Date(1999,3,5); //时间是:1999-4-5 d.getFullYear();年d.getMonth();月(正常-1)d.getDate();天d.getDay();星期几d.getHours();d.getMinutes();d.getSeconds(); 数学函数操作:Math.ceil();Math.floor();Math.round();Math.random();Math.sqrt(); 表单验证:

PHP基础(二) 1、随机数和时间 2、字符串函数

一.随机数和时间//随机数生成器(JS:math.random)echo rand(); //生成某个范围内的随机数echo rand(0,10); //时间戳echo time(); //格式化显示时间echo "<br>";echo date("Y-m-d H:i:s",time());echo "<br>";echo date("Y-m-d H:i:s","101506494366&qu

JS对于字符串、时间日期、数学函数的操作以及常用事件的使用(组织事件冒泡)

一.字符串的操作 1.转大写: s.toLowerCase(); 2.转大写: s.toUpperCase(); 3.字符串的截取: s.substr(3,4);      -从索引3开始截取,截取4位.索引从0开始. 4.将字符串按指定的字符拆开: s.split(",");             引号内放指定的字符.返回的是一个数组. 5.字符串长度: s.length; 6.字符串中一个字符的索引: s.indexOf("world");      worl

6、SQL基础整理(日期时间数据类型,转换函数)

日期时间数据类型 *系统常量: @@DATEFIRST(返回当前时间) DATEADD 增加时间 语法:DATEADD (datepart , number , date ) select DATEADD(YEAR,2,'2013-11-2') DATEDIFF 两个日期之间的距离 select DATEDIFF(YEAR,'2011-7-18','2014-11-2') DATENAME 返回某个时间值里面想要得到某块类型的数 select DATENAME(YEAR,'2011-7-8')

OC中关于时间的几个函数及格式化时间

// // main.m // 时间格式化 // // Created by Macro on 14-12-10. // Copyright (c) 2014年 Macro. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //返回当前时间,以GMT为准 NSDate * date = [NSDate da

SQL Server 扩展一个支持类似。net 时间格式化的标量函数~

IF EXISTS(SELECT TOP 1 * FROM sys.objects WHERE name=N'uF_DateFormat' AND [type]='FN') DROP FUNCTION uF_DateFormat GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: hehai -- Create date: 2