2015-01-23 4 views
1

날짜 선택 도구에서 날짜를 저장하는 배열이 있는데 토요일과 일요일에 날짜가 있는지 확인하여 추가 비용을 청구해야합니다. BaseRate 상단. dates 배열은 startDate와 endDate 사이의 날짜로 배열을 채우는 데 사용됩니다. 이 코드는 내가 생각했던대로 작동하지 않는 것 :Visual Basic에서 날짜를 확인하는 방법

Dim dates(Nights) as Date 
For i As Integer = 0 To Nights 
     dates(i) = StartDay 
     StartDay.AddDays(1) 
Next 

For i As Integer = 0 To Nights 
    If dates(i).Day = DayOfWeek.Saturday Or dates(i).Day = DayOfWeek.Sunday Then 
     BaseRate += (BaseRate * dclWeekendSurcharge) 
    End If 
Next 
+0

해야 하는가'날짜 (i)를. = DayOfWeek.Saturday'은 (i) .Day = DayOfWeek.Saturday'일까요? 너는 잃어버린 것 같아. 토요일에있는 날. –

+0

그건 내 부분에서 오타였다. 코드에서 수정되었지만 여전히 올바르게 실행되지 않습니다. – user3440204

답변

1

Day 속성은 주, 아니 하루 달의 날입니다. DateOfWeek 열거 형과 정확하게 비교하려면 Date 개체의 DayOfWeek 속성을 사용합니다.

Dim dates(Nights) as Date 
For i As Integer = 0 To Nights 
    If dates(i).DayOfWeek = DayOfWeek.Saturday Or dates(i).DayOfWeek = DayOfWeek.Sunday Then 
     BaseRate += (BaseRate * dclWeekendSurcharge) 
    End If 
Next 

개념

아래의 샘플 코드와 체류 기간에 대한 비율 계산으로 변환 할 수 있습니다 :

Imports System 
Imports System.Collections.Generic 

Dim nightlyRate as Decimal = 60 '$60/night 
Dim weekendSurcharge as Decimal = 0.1 '10% higher 
System.Console.WriteLine("$60 = ${0}", GetTotal(Date.Parse("1/1/2015"), Date.Parse("1/2/2015"), nightlyRate, weekendSurcharge)) 
System.Console.WriteLine("$120 = ${0}", GetTotal(Date.Parse("1/1/2015"), Date.Parse("1/3/2015"), nightlyRate, weekendSurcharge)) 
System.Console.WriteLine("$186 = ${0}", GetTotal(Date.Parse("1/1/2015"), Date.Parse("1/4/2015"), nightlyRate, weekendSurcharge)) 

Function GetTotal(startDay as Date, endDay as Date, baseRate as Decimal, weekendSurcharge as Decimal) as Decimal 
    Dim total as Decimal = 0 
     Do While startDay < endDay 
      total += baseRate 
      If startDay.DayOfWeek = DayOfWeek.Saturday Or startDay.DayOfWeek = DayOfWeek.Sunday Then 
       total += (baseRate * weekendSurcharge) 'Assume surchage is a multiplier, not a dollar rate 
      End If 
      startDay = startDay.AddDays(1) 
     Loop 
    Return total 
End Function 

이는 출력 :

$60 = $60 '1 night, no weekend 
$120 = $120 '2 nights, no weekend 
$186 = $186.0 'This is with the 10% multiplier since 1/3 is a weekend 
+0

이것이 날짜 배열을 채우는 적절한 방법일까요? 대한 내가 정수 = 0 밤에 날짜 (I) = startDay를 StartDay.AddDays (1) 다음 – user3440204

+0

방금 ​​추가 요금을 설명하는 데 충전 총 비율을 계산하려는 경우는, 조금있다 배열보다 쉬운 방법. 숙박 요금을 청구 할 총 요금 만 필요합니까? –

+0

내가 필요한 것은 사용자가 예약을위한 시작 날짜와 종료 날짜를 선택하게하고 해당 범위 내의 날짜 중 어느 것이 주말인지에 따라 총 가격에 추가 요금이 추가됩니다. – user3440204

관련 문제