2013-09-26 48 views
5

在我的代碼中,如何設置arrivaldate和depaturedate,以便我可以得到一筆到期的金額?我需要設置他們,因爲在酒店住了幾天,所以我可以拿出一個總數。如果這有什麼意義?我在Visual Basic中使用datetimepickers。如何查找兩個日期/ DateTimePickers之間的天數

Public Class RentalForm 
    'declare constants 
    Const tax_rate_decimal As Decimal = 12.25D 
    Const king_price_decimal As Decimal = 110.9D 
    Const queen_price_decimal As Decimal = 105.9D 
    Const double_price_decimal As Decimal = 95.9D 

    'declare variables 
    Private roomchargesumdecimal, taxamountsumdecimal, amountduesumdecimal As Decimal 

    Private Sub exitButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles exitButton.Click 
     Close() 
    End Sub 

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBoxnameofguest.TextChanged 

    End Sub 

    Private Sub calculateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles calculateButton.Click 
     'dimension local variables 
     Dim numberofguestsinteger As Integer 
     Dim roomchargedecimal, taxamountdecimal, amountduedecimal, taxratedecimal As Integer 
     Dim arrivaldate, departuredate As Date 

     Try 
      'dates 
      arrivaldate = Now 

      'convert quantity to numeric 
      numberofguestsinteger = Integer.Parse(TextBoxNumberofguests.Text) 

      'calculate values for single person 
      roomchargedecimal = numberofguestsinteger * (arrivaldate + departuredate) 
      taxratedecimal = roomchargedecimal * tax_rate_decimal 

     Catch ex As Exception 

     End Try 

    End Sub 

    Private Sub DateTimePickerarrivaldate_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePickerarrivaldate.ValueChanged 

    End Sub 

    Private Sub Label16averagelengthofstay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label16averagelengthofstay.Click 


    End Sub 

    Private Sub RentalForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 

    End Sub 
End Class    
+0

可能重複[計算兩個日期之間的差異(天數)?](https://stackoverflow.com/questions/1607336/calculate-difference-between-two-dates-number-of-days) –

回答

2

的的DateTimePicker對象有一個Value property,這將給你對每個日期時間。您可以通過從另一箇中減去一個DateTime對象來獲得差異。

P.S.不要吃那樣的所有例外。這是不酷的。

15

DateTime數學首先會令人困惑。但它們並不重要,因爲它們是DateTimePicker控件或變量,因爲myDateTimePicker.Value a DateTime類型。所以,你可以混合和匹配的變量和控制,如到達的現在和離開一個選擇器,並且只使用加減:

Dim arrivaldate As DateTime = DateTime.Now 
Dim departuredate As DateTime = Me.DeparturePicker.Value 

Dim DaysStayed as Int32 = departuredate.Subtract(arrivaldate).Days 

要記住的一點是,結果是TimeSpan對象。如果你看結構,你會看到它提供了從DaysTicks的單位時間。

上面的代碼從TimeSpan中剔除Days的值,但不創建溫度TimeSpan var。另一種方法:

Dim tsHotelStay = detarturedate.Value - arrivalDate 
wholeDays = tsHotelStay.Days    ' e.g 7 
totalDays = tsHotelStay.TotalDays   . e.g. 7.53 
totalHrs = tsHotelStay.TotalHours   . eg 180.397 

這個時候,碼創建TimeSpan變量(tsHotelDay)。請注意,所有屬性都可以使用全部和部分形式(除了Ticks)。

最後,顯示的兩個減法方法(DateTime.Subtract(dt)myTs = dtA - dtB)在功能上是相同的:都返回一個TimeSpan對象。

1

也許你可以使用

`DateDiff(DateInterval.Day, DateTimePicker1.Value, DateTimePicker2.Value) 

計算(天)日期間隔數betveen兩個日期。

相關問題