需要向日期添加天数,但从日历中排除某些天数
本文关键字:日历 排除 日期 添加 | 更新日期: 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似乎有点奇怪。