2016-06-10 7 views
-1

Я запускаю приложение, в котором я могу получить требуемое время, однако, когда я пытаюсь вычесть одно значение из другого, появляется сообщение об ошибке, указывающее преобразование с даты тип не может произойти с интервалом времени. Используемые переменные показаны ниже:Преобразование между временными интервалами и датой с помощью vb.net

Dim downtime As TimeSpan 
Dim uptime As TimeSpan 

Dim errortime As String() = lb_critical.SelectedItem.Split({" | "}, StringSplitOptions.RemoveEmptyEntries) 
Dim errortimefound As DateTime = Convert.ToDateTime(errortime(0).ToString()) 
downtime = DateTime.Now - errortimefound 
uptime = DateTime.Now - Convert.ToDateTime(downtime.ToString()) 

Когда я запускаю это, я получаю ошибку с переменной времени простоя.

Чтобы попытаться решить проблему, я попытался преобразовать переменные во все DateTime, прежде чем вычесть их, посмотрел в Интернете, но не был успешным.

Может ли кто-нибудь определить, что я делаю неправильно здесь.

Спасибо Эндрю за улучшенный код, но, к сожалению, я все еще получаю ошибку. Пожалуйста, смотрите изображение ниже:

enter image description here

+0

почему вы хотите, чтобы преобразовать промежуток времени времени даты? проверьте это для более http://stackoverflow.com/questions/10276228/timespan-to-datetime-conversion – Abdul

+0

Я посмотрел, что сайт уже пробовал метод, но он не работал. –

+1

'Неправильно конвертировать TimeSpan в DateTime' или наоборот. Вычитание одной DateTime из другой не приведет к упоминанию первого сообщения об ошибке. Мы не можем видеть этот код, но он делает что-то еще, чтобы вызвать эту ошибку. – Plutonix

ответ

0

Здесь представлен образец рабочего метода:

Private Sub Button54_Click(sender As System.Object, e As System.EventArgs) Handles Button54.Click 
    getTimes("wibblewoffle") 
    getTimes("2016-06-10 08:55:12") 
End Sub 

Private Sub getTimes(foundTime As String) 

    Dim errortimefound As DateTime 

    If DateTime.TryParse(foundTime, errortimefound) Then 

     Dim downtime As TimeSpan = DateTime.Now.Subtract(errortimefound) 
     Dim uptime As TimeSpan = DateTime.Now.Subtract(Convert.ToDateTime(downtime.ToString())) 

     'do your magic here 

    Else 
     MessageBox.Show(String.Format("This is not a valid date time: =>[{0}]", foundTime)) 
    End If 

End Sub 
+0

Andrew, пожалуйста, посмотрите изображение в сообщении. Это сообщение об ошибке произошло с помощью улучшенного кода, который вы мне предоставили. Это связано с ошибкой, так как ваш код работает, если дата вводится вручную, но не работает, если она передается с использованием переменной errortime. –

+0

Что именно находится в строке, которую вы передаете? Я предполагаю, что это не понимается как действительное datetime. Вы можете попробовать DateTime.TryParse, чтобы проверить его. –

+0

У меня есть html-файл, из которого я читаю данные, и я заполняю список с данными. Затем я прошу пользователя выбрать одну из строк из списка, и когда я это сделаю, я хочу получить дату и время этой строки. Данные выглядят как 21/04/2016 08:53:44 | 21/04/2016 08:53:44 | frmManagement.LiquidInThisPositionToolStripMenuItem_Click(): Исключение произошло –

 Смежные вопросы

  • Нет связанных вопросов^_^