2013-09-26 126 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两个日期。

相关问题