我有一个奇怪的日期舍入问题,希望有人能解决。我的客户使用从周一到周日的工作周。星期日的日期被视为一周的结束日期,用于标识特定一周内输入的所有记录(因此上周输入的任何内容的 WEEKDATE 值为“10/26/2008”,即星期日的日期)。
一个小问题是,用户输入前一周的记录直到本周星期一上午 11 点。
所以我需要一个以 DateTime.Now 开头并根据上述规则返回周末日期(无时间部分)的函数。感谢您的帮助。我有一个可行的解决方案,但我不好意思发布它。
哦,我不会使用 LINQ。
最佳答案
public DateTime WeekNum(DateTime now)
{
DateTime NewNow = now.AddHours(-11).AddDays(6);
return (NewNow.AddDays(- (int) NewNow.DayOfWeek).Date);
}
public void Code(params string[] args)
{
Console.WriteLine(WeekNum(DateTime.Now));
Console.WriteLine(WeekNum(new DateTime(2008,10,27, 10, 00, 00)));
Console.WriteLine(WeekNum(new DateTime(2008,10,27, 12, 00, 00)));
Console.WriteLine(WeekNum(new DateTime(2008,10,28)));
Console.WriteLine(WeekNum(new DateTime(2008,10,25)));
}
您可以硬编码 DateTime.Now 而不是传递 DateTime 对象。这样只会让测试变得更容易。
关于c# - 如何在 C# 中对日期字段进行周末舍入(不使用 LINQ)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/240531/