gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:29:22 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com