Как найти количество дней между двумя датами / DateTimePickers

В моем коде ниже, как мне настроить дату прибытия и depaturdate, чтобы я мог получить сумму? Мне нужно настроить их как дни, оставленные в отеле, чтобы я мог придумать всего. Если это имеет смысл? Я использую datetimepickers в Visual Basic.

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 

Математика DateTime может сбивать с толку вначале. Но на самом деле не имеет значения, являются ли они элементами управления DateTimePicker или переменными, потому что myDateTimePicker.Value является типом DateTime . Таким образом, вы можете смешивать и сопоставлять переменные и элементы управления, такие как Arrival as Now и Departure from picker, и просто использовать вычитание:

 Dim arrivaldate As DateTime = DateTime.Now Dim departuredate As DateTime = Me.DeparturePicker.Value Dim DaysStayed as Int32 = departuredate.Subtract(arrivaldate).Days 

Следует помнить, что результатом является объект TimeSpan . Если вы посмотрите на структуру, вы увидите, что она обеспечивает время, прошедшее в единицах от Days до Ticks .

Приведенный выше код сбрасывает значение Days из TimeSpan без создания временного TimeSpan var. Другой путь:

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

На этот раз код создает переменную TimeSpan ( tsHotelDay ). Обратите внимание, что все свойства доступны в целых и дробных формах (кроме Ticks).

Наконец, два показанных метода вычитания ( DateTime.Subtract(dt) и myTs = dtA - dtB ) функционально идентичны: оба возвращают объект TimeSpan.

Объекты DateTimePicker имеют свойство Value , которое даст вам DateTime для каждого. Вы можете получить разницу между двумя объектами DateTime, вычитая один из другого.

PS Не ешьте все подобные исключения. Это бесполезно.

Возможно, вы могли бы использовать

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

для расчета числа интервалов дат (дней) выведите две даты.

  • Имя не существует в ошибке пространства имен в XAML
  • Лучший / самый быстрый способ чтения листа Excel в DataTable?
  • Сортировка массива имен папок, таких как Проводник Windows (числовые и по алфавиту) - VB.NET
  • В чем разница между And и AndAlso в VB.NET?
  • Эквивалент MoveNext в VB.NET
  • Выход в VB.NET
  • Случайное исключение
  • Отключить использование JSON.net
  • Есть ли эквивалент VB.NET для C # ''? ' оператор?
  • Можно ли записать на консоль цвет в .NET?
  • Integer.Parse vs. CInt
  • Давайте будем гением компьютера.