C# 需要在日期中添加天,但从日历中排除某些天

C# 需要在日期中添加天,但从日历中排除某些天,c#,visual-studio-2010,datetime,date,datetimepicker,C#,Visual Studio 2010,Datetime,Date,Datetimepicker,使用C#在Visual Studio中工作。我正在为一个小型办公室制作一个软件,用于捕获诉讼。一旦诉讼被抓获,办公室有15天的时间向法庭发送一些文件。所以最后期限是15天 但如果有,例如,和更新(update1)的诉讼,办公室现在有一个新的截止日期发送更新1文件 因此,捕获的截止日期是dd/MM/yyy 那么,更新1的截止日期为dd/MM/yyyy 但我需要排除所有非劳动日,因此截止日期不显示任何非劳动日。例如: 捕获时间:15天 更新1:5天 更新2:10天 更新3:7天 因此,如果我捕捉到今

使用C#在Visual Studio中工作。我正在为一个小型办公室制作一个软件,用于捕获诉讼。一旦诉讼被抓获,办公室有15天的时间向法庭发送一些文件。所以最后期限是15天

但如果有,例如,和更新(update1)的诉讼,办公室现在有一个新的截止日期发送更新1文件

因此,捕获的截止日期是dd/MM/yyy 那么,更新1的截止日期为dd/MM/yyyy

但我需要排除所有非劳动日,因此截止日期不显示任何非劳动日。例如:

捕获时间:15天 更新1:5天 更新2:10天 更新3:7天

因此,如果我捕捉到今天,即2011年7月28日,那么应该在截止日期变量中添加15天,即8月12日,但我必须从日历中排除非劳动日。例如,2011年8月12日

我已将DatePicker值转换为字符串,格式为(dd/MM/yyyy),并将其与无效天数的字符串列表进行比较,格式为(dd/MM/yyyy)

如果最后期限落在这几天中的某一天,我将最后期限转换为dateTime,加上1天,直到它不落在这几天中的某一天。然后将最终的dateTime值保存为新的截止日期

例如:

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;
}
我遇到的问题是,如果截止日期与无效日期匹配,则不会向dealine添加天数

我现在做的根本不起作用


谁能给我点化一下吗。(=

您需要更改以下内容

dt.AddDays(1).ToString("dd/MM/yyyy");
DeadLine = dt;

AddDays方法不会更改DateTime的值。相反,它返回一个新的DateTime,其值是AddDays操作的结果

有关从某个日期开始添加工作日的函数的更多信息,请参阅以下

dt.AddDays(1).ToString("dd/MM/yyyy");
DeadLine = dt;
这条线

dt.AddDays(1).ToString("dd/MM/yyyy");
没有任何效果。
DateTime
s是不可变的。该行所做的只是创建一个新的
DateTime
和一个从未被引用的新
字符串。我想你的意思是:

DeadLine = dt.AddDays(1).ToString("dd/MM/yyyy");

但是,您使用的是
String
s而不是
DateTime
s,这似乎有点奇怪。

如果您想跳过时间段内的劳动日(即15天内),那么您可以使用以下内容(未经测试,直接在此处键入):

用法示例:

DateTime deadline = AddDaysExcluding(DatePicker01.Value, 15,
    new DateTime(2011, 8, 12), new DateTime(2011, 8, 15), new DateTime(2011, 8, 19));

如果在15天内出现,您是否也希望它跳过劳动日?(不仅仅是如果从开始的15天起是劳动日),这很有帮助。谢谢。但我仍然有一个问题。正如George Duckett所说。我确实希望在15天内包括非劳动日。这对AddDays问题还是有帮助的(=没问题,我已经用一些可能对你有帮助的信息更新了答案。我不太理解代码。但我可以设法使用它。问题是。我如何在代码中实现这一点?是的。我确实需要在时间段内跳过劳动日。(=将此方法添加到某个位置,然后调用它,传入开始日期、天数,然后以数组或参数列表的形式传入所有工作日。请参见此处:
DateTime deadline = AddDaysExcluding(DatePicker01.Value, 15,
    new DateTime(2011, 8, 12), new DateTime(2011, 8, 15), new DateTime(2011, 8, 19));