当结束日期&过去的日子
本文关键字:日子 过去 结束 日期 | 更新日期: 2023-09-27 17:54:41
我正在开发c#.net解决方案,我必须根据提供的结束日期和持续时间(过去的日子)计算开始日期,而没有周末。
。结束日期:2011年5月5日过去的日子:5
开始日期=(05/5/2011)- 5天(不包括周末)
开始日期= 29/04/2011
谢谢你,
我可能会这样做:
DateTime CalcStartDate(DateTime endTime, int daysBack)
{
DateTime startTime = endTime.Date;
while (daysBack > 0)
{
startTime = startTime.AddDays(-1);
if (startTime.DayOfWeek != DayOfWeek.Saturday && startTime.DayOfWeek != DayOfWeek.Sunday)
{
--daysBack;
}
}
return startTime;
}
或者更好的是,Bala建议使用图书馆。日期和时间是混乱的,一个经过加固/测试的库通常是一个不错的选择。
Bala R有正确的答案。下面是一篇关于如何使用AddBusinessDays()方法的文章的链接:
http://www.codeproject.com/KB/cs/AddBusinessDay.aspx我不知道你要追溯到多久以前。如果是很多天以前,那么循环这些天可能会占用一些CPU资源。嗯,可能不是现代处理器…
我决定实现一个没有循环的解决方案。我的代码有点难读,但它应该更有效的性能方面。
public static class DateTimeExtensions
{
public static DateTime SubtractBusinessDays(this DateTime fromDateTime, int days)
{
var subtractDays = days % 5;
var dayNumber = fromDateTime.DayOfWeek == DayOfWeek.Sunday ? 7 : (int)fromDateTime.DayOfWeek;
var addDays = Math.Max(dayNumber - 5, 0);
var result = fromDateTime.AddDays(addDays - subtractDays - (days / 5 * 7));
if ((addDays + dayNumber) % 7 <= subtractDays)
result = result.AddDays(-2);
return result;
}
}