需要向日期添加天数,但从日历中排除某些天数

本文关键字:日历 排除 日期 添加 | 更新日期: 2023-09-27 18:03:42

使用c#在Visual Studio中工作。我在为一个小办公室做一个软件,用来记录诉讼。一旦接到诉讼,该办公室有15天的时间向法庭发送一些文件。最后期限是15天。

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

所以,捕获的截止日期是dd/MM/yyy然后,update1的deadLine为dd/MM/yyyy

但是我需要排除所有非工作日,所以deadline不显示任何非工作日。例子:

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

因此,如果我捕获今天,2011年7月28日,则应该向deadLine变量添加15天,即8月12日,但我必须从日历中排除非工作日。例如2011年8月12日。

我已经将DatePicker值转换为字符串,格式(dd/MM/yyyy),并且我将其与非有效日期字符串列表进行比较,格式(dd/MM/yyyy)。

如果截止日期落在其中一天,我将截止日期转换为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;
}

我遇到的问题是,如果截止日期与无效日期匹配,则不会在截止日期上添加天数。

我正在做的事情不管用。

谁能给我点化一下。(=

需要向日期添加天数,但从日历中排除某些天数

您需要更改以下内容…

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

……

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

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

有关从特定日期开始添加工作日的函数的更多信息,请参见以下…

c#:从某个日期开始添加工作日

如果您想在时间段内跳过工作日(即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));

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

没有任何意义。DateTime是不可变的。这一行所做的就是创建一个新的DateTime和一个新的String,它们永远不会被引用。我想你的意思是:

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

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