时间计算

12 篇文章 0 订阅
10 篇文章 0 订阅


    bool CheckAcceptTime(XTaskTemplate tmp)
    {
        bool ret = false;


        if (tmp.nAcceptTimeType == 0)
            return true;


        DateTime date = DateTime.Now;//XTaskServerAgent.GetServerTime();


        switch (tmp.nAcceptTimeType)
        {
            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eDay:
                if (date.Day >= Convert.ToInt32(tmp.nAcceptTimeValue))
                    ret = true;
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eMonth:
                if (date.Month >= Convert.ToInt32(tmp.nAcceptTimeValue))
                    ret = true;
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eSeason:


                switch (Convert.ToInt32(tmp.nAcceptTimeValue))
                {
                    case 1:
                        if (date.Month < 4 && date.Month > 0)
                            ret = true;
                        break;
                    case 2:
                        if (date.Month < 7 && date.Month > 3)
                            ret = true;
                        break;
                    case 3:
                        if (date.Month < 10 && date.Month > 6)
                            ret = true;
                        break;
                    case 4:
                        if (date.Month < 13 && date.Month > 9)
                            ret = true;
                        break;
                }
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eYear:
                if (date.Year >= Convert.ToInt32(tmp.nAcceptTimeValue))
                    ret = true;
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eHour:
                if (date.Hour >= Convert.ToInt32(tmp.nAcceptTimeValue))
                    ret = true;
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eDateTime:
                string[] arr = tmp.nAcceptTimeValue.Split('-');
                if (arr.Length != 2)
                    break;


                string[] part1 = arr[0].Split('/');
                string[] part2 = arr[1].Split(':');


                DateTime date2 = new DateTime(Convert.ToInt32(part1[0]), Convert.ToInt32(part1[1]), Convert.ToInt32(part1[2]),
                    Convert.ToInt32(part2[0]), Convert.ToInt32(part2[1]), Convert.ToInt32(part2[2]));
                // 如果这里出错,那么配置表填写不对,格式如:2015/06/11-14:30:50


                if (date >= date2)
                    ret = true;
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eMin:
                if (date.Minute >= Convert.ToInt32(tmp.nAcceptTimeValue))
                    ret = true;
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eSecond:
                if (date.Second >= Convert.ToInt32(tmp.nAcceptTimeValue))
                    ret = true;
                break;
        }


        return ret;
    }
    public static DateTime OutTime(int timeType, string value, string AcceptTime)
    {
        DateTime date = Convert.ToDateTime(AcceptTime);
        switch (timeType)
        {
            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eDay:
                date = date.AddDays(Convert.ToInt32(value));
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eMonth:
                date = date.AddMonths(Convert.ToInt32(value));
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eSeason:
                date = date.AddMonths(Convert.ToInt32(value) * 3);
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eYear:
                date = date.AddYears(Convert.ToInt32(value));
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eHour:
                date = date.AddHours(Convert.ToInt32(value));
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eDateTime:
                string[] arr = value.Split('-');
                if (arr.Length == 2)
                {
                    string[] part1 = arr[0].Split('/');
                    string[] part2 = arr[1].Split(':');


                    date = new DateTime(Convert.ToInt32(part1[0]), Convert.ToInt32(part1[1]), Convert.ToInt32(part1[2]),
                        Convert.ToInt32(part2[0]), Convert.ToInt32(part2[1]), Convert.ToInt32(part2[2]));
                    // 如果这里出错,那么配置表填写不对,格式如:2015/06/11-14:30:50
                }
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eMin:
                date = date.AddMinutes(Convert.ToInt32(value));
                break;


            case (int)XTaskDataDefine.ENUM_TASK_TIME_TYPE.eSecond:
                date = date.AddSeconds(Convert.ToInt32(value));
                break;
        }


        return date;

    }




local function TimeOutTime(playerid, taskid)
local task = get_task_info( GetTaskType(taskid), GetTaskTemplateId(taskid) )
local out_time = 0


if task.OutTimeType <= 0 then 
return out_time
end 


if not task.OutTime then 
return out_time
end 


local field = tostring(taskid)
local accepttime = db:hget(string.format("task:%d:accept_time", playerid), field)
accepttime = tonumber(accepttime)


--task.OutTime 除了绝对时间,其他都是 接受时间 + value->把val转换成秒
if task.OutTimeType == taskdef.time_DateTime then
local items = lib.split_str( string.gsub(task.OutTime, "\"", "") , "-") --2015/06/11-14:30:50
local part1 = lib.split_str( items[1], "/")
local part2 = lib.split_str( items[2], ":")
out_time = os.time{year=part1[1], month=part1[2], day=part1[3], hour=part2[1], min=part2[2], sec=part2[3]} 


else if task.OutTimeType == taskdef.time_Year then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60 * 24 * 30 * 12)


else if task.OutTimeType == taskdef.time_Season then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60 * 24 * 30 * 3)


else if task.OutTimeType == taskdef.time_Month then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60 * 24 * 30)


else if task.OutTimeType == taskdef.time_Week then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60 * 24 * 7)


else if task.OutTimeType == taskdef.time_WeekDay then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60 * 24)


else if task.OutTimeType == taskdef.time_Day then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60 * 24)


else if task.OutTimeType == taskdef.time_Hour then
out_time = accepttime + (tonumber(task.OutTime) * 60 * 60)


else if task.OutTimeType == taskdef.time_Min then
out_time = accepttime + (tonumber(task.OutTime) * 60)


else if task.OutTimeType == taskdef.time_Second then
out_time = accepttime + tonumber(task.OutTime)
end


return out_time
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值