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