2011-07-28 7 views
2

C#으로 Visual Studio에서 작업. 저는 소규모 사무실에서 소송을하는 소프트웨어를 만들고 있습니다. 일단 소송이 접수되면, 사무소는 15 일 이내에 일부 문서를 재판소에 보냅니다. 그래서 deadline은 15 일 후입니다.날짜에 일을 추가해야하지만 달력에서 특정 일을 제외해야합니다.

예를 들어 소송에 update (update1)가있는 경우 office1에 update1 문서를 보내는 새로운 deadline이 추가되었습니다.

그래서, 캡처 마감일은 DD/MM/YYY 다음, 갱신 1 마감일 DD/MM은/년

는하지만 모든 비 노동 일을 제외해야하므로 마감 시간이 아닌 노동을 표시하지 않습니다 일. 예 :

캡처 : 십오일 갱신 1 : 오일 갱신 2 : 십일 갱신 3 : 칠일 오늘을 캡처 그래서, 만약, 2011 년 7 월 28 15 일 마감 변수에 추가해야

, 8 월 12 일이 될 것입니다.하지만 달력에서 비 노동 일을 제외해야합니다. 예 : 8 월 12 일 2011입니다.

DatePicker 값을 format (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; 
} 

문제 I는 데, 그것은 dealine에 일을 추가하지 않습니다.

내가하는 일은 어떤 식 으로든 작동하지 않습니다.

누구든지 나를 계발시킬 수 있습니까? (=

+0

15 일 이내에 나타나면 노동 일을 건너 뛰어도됩니까? (시작일로부터 15 일이 노동일 인 경우에만 해당) –

답변

0

은 (안된를, 바로 여기에 입력) :

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)); 
+0

코드를 잘 이해하지 못합니다. 그러나 문제가 있습니다. 그렇습니다. 기간 내에 근무일을 생략해야합니다 (= – Yushell

+0

).이 방법을 어딘가에 추가 한 다음 전화를 걸어 시작일과 일수를 전달해야합니다. 그런 다음 모든 노동 일, 배열 또는 매개 변수 목록으로. 여기를 참고하십시오 : http://msdn.microsoft.com/en-us/library/w5zay9db(v=vs.100).aspx –

4

당신은

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

는 "메소드 AddDays은 날짜 시간의 값을 변경하지 않습니다 ...

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

에 ... 다음 변경해야합니다. 대신 반환 AddDays 작업의 결과 값인 새 DateTime "

특정 날짜의 근무일 추가 기능에 대한 자세한 내용은 다음을 참조하십시오.

C#: Adding working days from a cetain date

+0

이것은 많은 도움이되었습니다. 감사. 그러나 나는 아직도 문제가있다. George Duckett이 말한 것처럼. 15 일 이내에 비 노동 일을 포함시키고 싶습니다. 이것은 어쨌든 AddDays 문제 (= – Yushell

+0

No probs, 도움이 될만한 더 많은 정보로 답변을 업데이트했습니다.) – edge2

0

라인

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

아무것도 달성하지 않습니다. DateTime은 변경할 수 없습니다. 모든 행은 참조되지 않는 새로운 DateTime과 새로운 String을 작성합니다.난 당신 말은 생각 :

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

그러나, 당신이 String들보다는 DateTime의를 사용하고 있는지 조금 이상한 것 같다. 그런 다음 다음 사용할 수 있습니다 (예 : 15 일 이내) 기간 내에 노동 일 동안 생략하고 싶었다면

관련 문제