我非常接近完成这项工作,希望这里有人可以帮助将球推上山顶。在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,因为这意味着您的星期五不是发薪日。关于c# - 确定最近和下一个发薪日(每周五),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25047349/