В.Б. Истекшее время метод путаницы
Я должен кодировать программу, которая находит истекшее время, когда я ввожу 2 раза в 2 текстовых поля, одно текстовое поле будет временем начала, другое текстовое поле будет временем окончания, я теряюсь в том, как я это делаю.
пример
Время начала 12:45
время окончания 13:15
тогда истекшее время должно быть 30 минут
Public Class Form1
Dim starttime As DateTime
Dim endtime As DateTime
Dim timetaken As TimeSpan
Private Sub btnOK_Click(sender As Object,
e As EventArgs) Handles btnOK.Click
starttime = txtStart.Text
endtime = txtEnd.Text
End Sub
End Class
2 ответа
Быстро из моей головы:
Option Strict On 'every good programmer does this
Public Class Form1
Private starttime As DateTime 'Please use Dim only in functions or subs
Private endtime As DateTime
Private timetaken As TimeSpan
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
starttime = DateTime.Parse(txtStart.Text) 'Parse the string input
endtime = DateTime.Parse(txtEnd.Text)
timetaken = endtime - starttime
End Sub
End Class
Конечно, это сильно зависит от того, какая строка может быть проанализирована в DateTime
пример. Это даже зависит от вашей системной культуры. Посмотрите https://msdn.microsoft.com/en-us/library/System.DateTime.Parse(v=vs.110).aspx для получения дополнительной информации о том, как должна выглядеть входная строка. Если дней будет достаточно, вы можете вместо этого использовать элемент управления DatePicker (который, к сожалению, не поддерживает ваши потребности в разы).
Вы можете предоставить формат входной строки с DateTime.ParseExact
насколько мне известно
Чтобы поймать ошибки, когда ввод текста в текстовых полях не может быть проанализирован, используйте DateTime.TryParse
,
Во-первых, используйте Dateime.Parse
или же DateTime.ParseExact
преобразовать string
в текстовых полях в DateTime
s,
Dim start = DateTime.Parse(txtStart.Text)
Тогда вы можете найти разницу между двумя DateTime
с помощью Subtract
метод, который возвращает TimeSpan
,
Dim difference = end.Subtract(start)