C# 确定最近和下一个发薪日(每周五交替)

C# 确定最近和下一个发薪日(每周五交替),c#,datetime,C#,Datetime,我很快就能让它发挥作用了,希望这里有人能帮我把球推过山顶。在C#中,我需要获取最近的发薪日和从今天开始的下一个发薪日(并最终将其扩展以查找公司历史上的任何发薪日)。发薪日每隔周五一次。我使用历史记录中的基准日期来查找我的付款日期 我的假设(如果我错了,请更正)是我应该总是能够将我的支付日期除以14。如果我做不到,那我就必须参加无薪周 以下是我迄今为止所做的工作: public DateTime GetNextPayDay() { DateTime myNow = DateTime.Now

我很快就能让它发挥作用了,希望这里有人能帮我把球推过山顶。在C#中,我需要获取最近的发薪日和从今天开始的下一个发薪日(并最终将其扩展以查找公司历史上的任何发薪日)。发薪日每隔周五一次。我使用历史记录中的基准日期来查找我的付款日期

我的假设(如果我错了,请更正)是我应该总是能够将我的支付日期除以14。如果我做不到,那我就必须参加无薪周

以下是我迄今为止所做的工作:

public DateTime GetNextPayDay()
{
    DateTime myNow = DateTime.Now;
    string myDay = myNow.DayOfWeek.ToString();
    while (myDay != "Friday")
    {
        myNow = myNow.AddDays(1);
        myDay = myNow.DayOfWeek.ToString();
    }
    DateTime mySeedDate = DateTime.Parse("01/02/1970");
    TimeSpan myTimeSpan = myNow.Subtract(mySeedDate);
    int myDaysDifference = myTimeSpan.Days;
    if (myDaysDifference % 14 == 0) // Problem is here
    {
        myNow = myNow.AddDays(7);
    }

    return myNow;
}

public DateTime GetLastPayDay()
{
    DateTime myNow = DateTime.Now;
    string myDay = myNow.DayOfWeek.ToString();
    while (myDay != "Friday")
    {
        myNow = myNow.AddDays(-1);
        myDay = myNow.DayOfWeek.ToString();
    }

    DateTime mySeedDate = DateTime.Parse("01/02/1970");
    TimeSpan myTimeSpan = myNow.Subtract(mySeedDate);
    int myDaysDifference = myTimeSpan.Days;
    if (myDaysDifference % 14 == 0) // Problem is here
    {
        myNow = myNow.AddDays(-7);
    }

    return myNow;
}
你的问题是

if (myDaysDifference % 14 == 0)
应该是不平等的

if (myDaysDifference % 14 != 0)
在这两种方法中

你的逻辑是从现在开始寻找上一个星期五,然后看看这个星期五和第一个日期之间的差异是否可以被14整除,如果可以的话,你要加上7天。这是不正确的,因为如果差距可以被14整除,那么
myDay
必须是发薪日。如果
myDaysDifference
不能精确除以14,则只需加7,因为这意味着周五不是发薪日。

您的问题是

if (myDaysDifference % 14 == 0)
应该是不平等的

if (myDaysDifference % 14 != 0)
在这两种方法中


你的逻辑是从现在开始寻找上一个星期五,然后看看这个星期五和第一个日期之间的差异是否可以被14整除,如果可以的话,你要加上7天。这是不正确的,因为如果差距可以被14整除,那么
myDay
必须是发薪日。你只想添加7,如果<代码> MyDaysStime< /Cord> < St>>不< /St> >除以14,因为这意味着你有一个不是发薪日的星期五。

到目前为止,你的问题是什么?确切地说,你也可以考虑将代码重构为基于EddieE-CATE的快速回复!我很抱歉,我没有说明问题是什么。我从来没有进入问题所在的“如果”。当我调试时,myDaysDifference%14的值始终为7。因此,==0的计算结果永远不会为true。我想我只是不太理解%运算符。有更好的方法吗?我想你的问题是
if(myDaysDifference%14==0)
在这两种方法中应该是不相等的-
if(myDaysDifference%14!=0)
。哦,好悲伤!!!彼得利兹,你完全正确。我现在觉得自己很笨。有时,我们把头重重地撞在墙上,结果没有人回答,额头也擦伤了。谢谢你在那里敲我的头!它现在正在工作。到目前为止,你的问题是什么?确切地说,你也可以考虑重构你的代码有点基于EddieECAT——快速回复人!!我很抱歉,我没有说明问题是什么。我从来没有进入问题所在的“如果”。当我调试时,myDaysDifference%14的值始终为7。因此,==0的计算结果永远不会为true。我想我只是不太理解%运算符。有更好的方法吗?我想你的问题是
if(myDaysDifference%14==0)
在这两种方法中应该是不相等的-
if(myDaysDifference%14!=0)
。哦,好悲伤!!!彼得利兹,你完全正确。我现在觉得自己很笨。有时,我们把头重重地撞在墙上,结果没有人回答,额头也擦伤了。谢谢你在那里敲我的头!它现在正在工作。