2013-07-10 2 views
0

나는 사용자가 배달을위한 요일과 그 운송 일을 정의하는 상황이 있습니다. 도착 예정일 (ETA) 날짜가 주어지면 운송 일의 예상 배달 일 (ETD) 날짜를 계산해야합니다.지정된 평일에 대상 날짜를 찾는 방법

예 :

ETA is 17/Jul/2013, Transit Day: 10 Days, Delivery Day: Tue/Fri 

AddDays(-10)을 사용함으로써, ETD가 8/Jul/2013 (Mon) 것이다. 납기일이 Tue 또는 Fri이 아니기 때문에 시스템은 달력을 뒤로 봐야합니다.

결과적으로 시스템은 5/Jul (Fri)ETD 날짜로 가져와야합니다.

이 요청을 보관하는 가장 좋은 방법은 무엇입니까?

답변

2
public DateTime GetLastPosibleDate(DateTime datetime, List<DayOfWeek> days) 
{ 
    DateTime dt = datetime; 
    if (!days.Any(d=> d==dt.DayOfWeek)) 
    { 
     dt= GetLastPosibleDate(datetime.AddDays(-1), days); 
    } 
    return dt; 
} 

public DateTime EstimatedDiliveryDate(DateTime arrival, int transitDays, List<DayOfWeek> deliveryDays) 
{ 
    return GetLastPosibleDate(arrival.AddDays(-transitDays), deliveryDays); 
} 

사용 : 코딩 샘플이 제공

var arrival = new DateTime(2013,07,17); 
var deliveryDays = new List<DayOfWeek>(){DayOfWeek.Tuesday, DayOfWeek.Friday}; 
var result = EstimatedDiliveryDate(arrival, 10, deliveryDays); 
+0

정확히 내가 무엇을 찾고! 고맙습니다. @Damith. – user2566818

0

당신이 할 수있는 일은 사용자의 취향에 따라 다음 배달 일을 찾을 때까지 며칠 사이에 반복하는 것입니다. 당신이 여기의 예를 볼 수 있습니다 Get Next Nth Fridays Date From Todays Date

관련 문제