确定最近和下一个发薪日(星期五交替)

本文关键字:星期五 发薪日 最近 下一个 | 更新日期: 2023-09-27 18:15:38

我非常接近这个工作,希望这里有人可以帮助把球推过山顶。在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,因为这意味着您有一个星期五不是发薪日。