Day 属性是月份中的某天,而不是星期几。使用 Date 对象的 DayOfWeek 属性与 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