使用C#在Visual Studio中工作。我正在为一个捕获诉讼的小型办公室制作软件。一旦起诉到诉讼,办公室有15天的时间将一些文件发送到法庭。因此,截止日期为15天。
但是,例如,如果有诉讼的更新(update1),则办公室现在有一个新的DeadLine来发送update1文档。
因此,Capture的DeadLine为dd / MM / yyy
然后,update1的DeadLine为dd / MM / yyyy
但是,我需要排除所有非劳动日,因此DeadLine不会显示任何非劳动日。例:
捕获:15天
更新1:5天
Update2:10天
Update3:7天
因此,如果我今天捕获了2011年7月28日,则应该将15天添加到DeadLine变量中,该日期应为8月12日,但是我必须从日历中排除非劳动日。例如,2011年8月12日。
我已将DatePicker值转换为格式为(dd / MM / yyyy)的字符串,并且将其与格式为(dd / MM / yyyy)的无效日期的字符串列表进行了比较。
如果DeadLine在这几天之一发生,我将DeadLine转换为dateTime,加1天,直到它不在这些日子之一。然后将最终的dateTime值另存为新的DeadLine。
例:
string DeadLine;
string NonValidDay001 = 12/08/2011;
string NonValidDay001 = 15/08/2011;
string NonValidDay001 = 19/08/2011;
DeadLine = DatePicker01.Value.AddDays(15).ToString("dd/MM/yyyy");
while (DeadLine == NonValidDay001 | DeadLine == NonValidDay001 | DeadLine == NonValidDay001)
{
dateTime dt = Convert.toDateTime(DeadLine);
dt.AddDays(1).ToString("dd/MM/yyyy");
DeadLine = dt;
}
我遇到的问题是,如果截止日期与无效天数匹配,则不会在交易中增加天数。
我正在做的事情没有任何效果。
任何人都可以启发我。 (=
最佳答案
如果您希望在该时间段内(即15天之内)跳过工作日,则可以使用以下内容(未经测试,请在此处直接输入):
public DateTime AddDaysExcluding(DateTime startDate, int days, params DateTime[] excludedDays)
{
while(days != 0)
{
if (excludedDays.Contains(startDate))
startDate = startDate.AddDays(1);
startDate = startDate.AddDays(1);
days--;
}
if (excludedDays.Contains(startDate))
startDate = startDate.AddDays(1);
}
用法示例:
DateTime deadline = AddDaysExcluding(DatePicker01.Value, 15,
new DateTime(2011, 8, 12), new DateTime(2011, 8, 15), new DateTime(2011, 8, 19));
关于c# - 需要在日期中添加天数,但要从日历中排除某些天数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6856917/