C# 确定最近和下一个发薪日(每周五交替)
我很快就能让它发挥作用了,希望这里有人能帮我把球推过山顶。在C#中,我需要获取最近的发薪日和从今天开始的下一个发薪日(并最终将其扩展以查找公司历史上的任何发薪日)。发薪日每隔周五一次。我使用历史记录中的基准日期来查找我的付款日期 我的假设(如果我错了,请更正)是我应该总是能够将我的支付日期除以14。如果我做不到,那我就必须参加无薪周 以下是我迄今为止所做的工作:C# 确定最近和下一个发薪日(每周五交替),c#,datetime,C#,Datetime,我很快就能让它发挥作用了,希望这里有人能帮我把球推过山顶。在C#中,我需要获取最近的发薪日和从今天开始的下一个发薪日(并最终将其扩展以查找公司历史上的任何发薪日)。发薪日每隔周五一次。我使用历史记录中的基准日期来查找我的付款日期 我的假设(如果我错了,请更正)是我应该总是能够将我的支付日期除以14。如果我做不到,那我就必须参加无薪周 以下是我迄今为止所做的工作: public DateTime GetNextPayDay() { DateTime myNow = DateTime.Now
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)
。哦,好悲伤!!!彼得利兹,你完全正确。我现在觉得自己很笨。有时,我们把头重重地撞在墙上,结果没有人回答,额头也擦伤了。谢谢你在那里敲我的头!它现在正在工作。