我非常接近完成这项工作,希望这里有人可以帮助将球推上山顶。在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/

10-09 06:00