【问题标题】:Periodicity of events [closed]事件的周期性[关闭]
【发布时间】:2012-02-26 03:38:02
【问题描述】:

例如,我们有每 3 个月举办一次的活动。事件有 DateStart、DataEnd 和 Periodicity。

如果事件在特定日期发生,请帮助我编写返回 true/false 的方法。

public bool MonthPeriodicityChecker (DateTime start, DateTime end, DateTime dateCheck, int periodicity)
{

}

例如,记录有:

start = 02/23/2012 22:00:00;
end = 12/31/2012 23:30:00;
periodicity = 3;

当当前月份 = 二月、五月、八月、十一月时,方法必须返回 true。

谢谢。

【问题讨论】:

标签: c#


【解决方案1】:

代码很简单:

var someDate = DateTime.Now; // could be any date set some other way

if(someDate > end) return false;

var checkDate = start;
while(checkDate < end)
{
    if(checkDate.Month == someDate.Month && checkDate.Year == someDate.Year)
        return true;
    checkDate = checkDate.AddMonths(periodicity);
}

return false;

您所做的只是确保someDate 没有超过end,并且startsomeDate 之间的月差可以被周期整除。

【讨论】:

  • 谢谢,但您的代码将四月打印为第一,但必须是二月(例如有问题)
  • 我将 checkDate 设置为昨天。
  • @user1230307 现在他已经给了你一个想法,你可以尝试自己动手。然后你就会理解其中的逻辑,并且将来能够做类似的事情。
  • @user1230307 - 你根本不应该设置 checkDate。您应该只设置 someDate (这是您要检查它是否在给定时间段内的日期)。
  • 抱歉,打错了,我给 someDate 赋值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
相关资源
最近更新 更多