2013-09-26 44 views
5

Trong mã của tôi dưới đây, làm cách nào để thiết lập ngày đến và depaturedate để tôi có thể nhận được số tiền đến hạn? Tôi cần phải thiết lập chúng như những ngày ở tại khách sạn vì vậy tôi có thể đưa ra một tổng số. Nếu điều này có ý nghĩa gì không? Tôi đang sử dụng datetimepickers trong Visual Basic.Cách tìm số ngày giữa hai ngày/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

Bản sao có thể có của [Tính toán sự khác biệt giữa hai ngày (số ngày)?] (Https://stackoverflow.com/questions/1607336/calculate-difference-between-two-dates-number-of-days) –

Trả lời

2

Đối tượng DateTimePicker có Value property, sẽ cung cấp cho bạn một Ngày giờ cho mỗi đối tượng. Bạn có thể nhận được sự khác biệt hai đối tượng DateTime bằng cách trừ đi một đối tượng khác.

P.S. Đừng ăn tất cả các ngoại lệ như thế. Đó là không thể.

15

DateTime Toán học có thể gây nhầm lẫn lúc đầu. Nhưng điều đó không quan trọng nếu chúng là các điều khiển hoặc biến số DateTimePicker bởi vì myDateTimePicker.Value a DateTime Loại. Vì vậy, bạn có thể trộn và kết hợp các biến và điều khiển như Đến như bây giờ và khởi hành từ một bảng chọn, và chỉ sử dụng phép trừ:

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

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

Những điều cần ghi nhớ là kết quả là một đối tượng TimeSpan. Nếu bạn nhìn vào cấu trúc, bạn sẽ thấy nó cung cấp thời gian đã trôi qua trong các đơn vị từ Days đến Ticks.

Mã ở trên có giá trị Days từ TimeSpan mà không cần tạo nhiệt độ TimeSpan var. Một cách khác:

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

thời gian này, các mã không tạo một biến TimeSpan (tsHotelDay). Lưu ý rằng tất cả các thuộc tính có sẵn ở dạng toàn bộ và phân đoạn (trừ Ticks).

Cuối cùng, 2 phương pháp trừ được hiển thị (DateTime.Subtract(dt)myTs = dtA - dtB) có chức năng giống nhau: cả hai đều trả về đối tượng TimeSpan.

1

Có lẽ bạn có thể sử dụng

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

để tính toán số khoảng cách ngày (ngày) betveen hai ngày.

Các vấn đề liên quan