使用C#在Visual Studio中工作。我正在为一个抓住诉讼的小型办公室制作软件。一旦诉讼被捕,该办公室有15天的时间将一些文件发送给仲裁庭。所以deadLine在15天内。
但是如果有例如,并且更新(update1)诉讼,办公室现在有一个新的deadLine来发送update1文件。
因此,Capture的deadLine是dd / MM / yyy 然后,update1的deadLine是dd / MM / yyyy
但我需要排除所有非劳动日,因此deadLines不会显示任何非劳动日。例如:
捕获: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;
}
我遇到的问题是,如果截止日期与无效天数匹配,则不会在交易中添加天数。
我正在做的事情不是以任何方式运作。
请有人赐教。 (=
答案 0 :(得分:4)
您需要更改以下内容......
dt.AddDays(1).ToString("dd/MM/yyyy");
DeadLine = dt;
为...
DeadLine = dt.AddDays(1).ToString("dd/MM/yyyy");
“方法AddDays不会更改DateTime的值。而是返回一个新的DateTime,其值是AddDays操作的结果。”
有关从特定日期添加工作日的功能的详细信息,请参阅以下内容...
答案 1 :(得分:0)
该行
dt.AddDays(1).ToString("dd/MM/yyyy");
没有任何成就。 DateTime
是不可变的。所有这一行都是创建一个永远不会被引用的新DateTime
和新String
。我想你的意思是:
DeadLine = dt.AddDays(1).ToString("dd/MM/yyyy");
但是,您使用String
而不仅仅是DateTime
s似乎有点奇怪。
答案 2 :(得分:0)
如果您想在这段时间内(即在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));