2013-09-26 40 views
5

私のコードでは、到着日と退会日を設定して金額を受け取る方法を教えてください。ホテルに泊まる日数を設定する必要があるので、私は合計を考え出すことができます。これが意味をなさない場合は?私はVisual Basicでdatetimepickersを使用しています。2つの日付間の日数の検索方法/ 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

[2つの日付の差分を計算する]([https://stackoverflow.com/questions/1607336/calculate-difference- between-two-dates-number-of-days)]の重複が考えられます。 –

答えて

2

のDateTimePickerオブジェクトを使用すると、それぞれの日時を与えるValue propertyを、持っています。違いを2つのDateTimeオブジェクトから差し引くことができます。

P.S.そのような例外はすべて食べないでください。それはクールではない。

15

DateTime数学は最初は混乱する可能性があります。しかし、 a DateTimeタイプであるため、DateTimePickerコントロールまたは変数であるかどうかは関係ありません。だから、あなたはミックスや、ピッカーから今のように発着などの変数とコントロールを一致させる、とだけ減算を使用することができます。

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

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

覚えておくべき事は結果がTimeSpanオブジェクトであるということです。あなたが構造を見ると、それはDaysからTicksまでの単位での経過時間を提供することがわかります。

上記のコードはTimeSpan varを作成せずにTimeSpanDaysの値を抜き出しています。もう一つの方法:

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を除く)全体および小数形式で利用可能であることに注意してください。

最後に、示された2つの減算方法(DateTime.Subtract(dt)およびmyTs = dtA - dtB)は機能的に同一です。両方ともTimeSpanオブジェクトを返します。

1

たぶん、あなたは二つの日付betveen日付間隔(日数)の数を計算するために

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

を使用することができます。

関連する問題