Member 11403304 Ответов: 1

Как я могу проверить, если warrantstatustime меньше, чем текущее время?


У меня есть следующее утверждение if. То, что я пытаюсь сделать, - это проверить внутри xml-документа в objXMLInputDoc, чтобы увидеть, равен ли WarrantStatusDate внутри NewWarrantStatus сегодняшней дате, и если WarrantStatusTime внутри NewWarrantStatus меньше текущего времени. Если это правда, то ничего не делайте, иначе покажите сообщение об ошибке, поместив его в переменную strErrorResponse.

Время, которое у меня есть в objXMLInputDoc для WarrantStatusTime, составляет 12:10:00.
Если этот оператор if выполняется в 12:15:00 (текущее время), это означает, что ничего не делать, потому что WarrantStatusTime (12:10:00) больше, чем время выполнения кода.

Если этот оператор if выполняется в 12:00:00, то сообщение об ошибке должно быть помещено внутрь переменной strErrorResponse, поскольку 12:00:00 (текущее время) находится перед WarrantStatusTime (12:10:00)

В моем заявлении if я поставил < 4, что составляет минуты, но не уверен, что это способ проверить, является ли WarrantStatusTime меньше текущего времени.
Как мне это сделать?

objXMLInputDoc имеет следующий xml-код
<?xml version="1.0" encoding="UTF-8"?>
<UpdateWarrantStatus>
	<WarrantNumber>
		<ID>2</ID>
	</WarrantNumber>
	<CurrentWarrantStatus>
		<WarrantStatusTypeText code="RECALLED">Recalled Inactive</WarrantStatusTypeText>
		<WarrantStatusDate>2018-10-16</WarrantStatusDate>
	</CurrentWarrantStatus>
	<NewWarrantStatus>
		<WarrantStatusTypeText code="IBARCLR">Warrant Cleared by Arrest</WarrantStatusTypeText>
		<WarrantStatusDate>2018-10-16</WarrantStatusDate>
		<WarrantStatusTime>12:10:00</WarrantStatusTime>
		<WarrantStatusComment>New status</WarrantStatusComment>
	</NewWarrantStatus>
</UpdateWarrantStatus>


Что я уже пробовал:

'New warrant status date specified in e-file = today, and time is less < current time
dtmNewWarrantStatusDateTime = CDate(objXMLInputDoc.DocumentElement.SelectSingleNode("msc:NewWarrantStatus/msc:WarrantStatusDate").InnerText + " " + objXMLInputDoc.DocumentElement.SelectSingleNode("msc:NewWarrantStatus/msc:WarrantStatusTime").InnerText)
If ((dtmNewWarrantStatusDateTime.Date = Date.Today) And (DateDiff(DateInterval.Minute, Date.Now, dtmNewWarrantStatusDateTime) < 4)) Then
Else
    strErrorResponse = "New warrant status Date and Time combination is invalid because time is in the past. i.e time less than current time."
    objXMLInputDoc.DocumentElement.SetAttribute("error", strErrorResponse)
End If

Alek Massey

В чем заключается ваша проблема?

Member 11403304

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю сообщение об ошибке, даже когда я не должен его получать. Я думаю, что проблема где я говорю, &ЛТ; 4. Я не уверен, как сделать мое заявление, если сравнивать время в элементе WarrantStatusTime с текущим временем (сейчас) и если, что времени на элемент WarrantStatusTime меньше, чем текущее время (например.г несколько минут раньше, чем текущее время), то ничего не делать. Если это время в WarrantStatusTime не раньше текущего времени, то показать сообщение об ошибке
Я делаю две вещи.
1. Проверьте, совпадает ли дата в NewWarrantStatus/WarrantStatusDate с сегодняшней датой. Я сделал это успешно.
2. Проверьте время в WarrantStatusDate/WarrantStatusTime и если это время не меньше (раньше) текущего времени, то покажите сообщение об ошибке, которое означает, что условие не удалось. Это та часть, в которой мне нужна помощь.
Я знал, что это неправильно, но мне нужно было хотя бы попытаться что-то сделать, прежде чем обращаться за помощью.
Все, что мне сейчас нужно, - это часть 2 моего заявления if.
т. е. Проверьте время в WarrantStatusDate/WarrantStatusTime и если это время не меньше (раньше) текущего времени, то я добавлю сообщение об ошибке. Я знаю, как добавить сообщение об ошибке, но мне нужна помощь, чтобы проверить WarrantStatusTime, если он не меньше текущего времени.
Спасибо за вашу помощь.

1 Ответов

Рейтинг:
4

Alek Massey

Заменять

If ((dtmNewWarrantStatusDateTime.Date = Date.Today) And (DateDiff(DateInterval.Minute, Date.Now, dtmNewWarrantStatusDateTime) < 4)) Then
Else
с
If (Date.Now < dtmNewWarrantStatusDateTime) Then
Else

но желательно
If (Date.Now > dtmNewWarrantStatusDateTime) Then
Когда у вас есть пустая ветвь "тогда", это сбивает с толку, когда кто-то смотрит на ваш код.

Если вы разрешаете 4-минутное окно, как это кажется, вычитайте dtmNewWarrantStatusDateTime из date.now и изучите свойство totalminutes результата timeinterval.
if ((date.now - dtmNewWarrantStatusDateTime).TotalMinutes < 4) then