2016-12-29 11 views
-1

Получение 2 дат от пользователя, оно работает, за исключением: если обе даты указаны в 2017 году, сообщение об ошибке отображается, когда это явно не должно.Использование даты() для сравнения даты с 2017 приводит к ошибке

Я вручную изменил 2016 до 2017, чтобы узнать, не изменилось ли это, но не было (с использованием Replace).

Вот код подтверждения:

todays_date = Date() 
todays_date = Replace(todays_date, "/", "-") 

If m_date_01 < todays_date Or m_date_02 < todays_date Then 
    m_valid = False 
    m_message = m_message & "<li>dates cannot be in the past</li>" 
End If 

response.write(todays_date) 
response.write(m_date_01) 
response.write(m_date_02) 
+0

Почему вы отметили это как VBScript и ASP.NET? Это VB.NET? Это классический ASP? – mason

+0

это asp, я работаю с .asp файлами? это неправильные теги? Я предположил, что язык сценариев по умолчанию для asp - это скрипт vb? – rem

+0

Право, я получаю его, не должен отмечать asp.net, извинения – rem

ответ

4

Не используйте < и > для сравнения дат. Иногда это сработает, но часто этого не будет. Хуже того, может показаться, что он работает, в том смысле, что он не дает ошибки, но результаты будут неправильными. В вашем случае вы почти наверняка получаете неправильный результат, потому что ваши так называемые даты на самом деле являются строками, а сравнение строк работает совсем по-другому, чем сравнение даты. (Например, если вы сортируете «9-15-2016», «1-15-2017» и «12-15-2016» в виде строк, вы получите январь, затем декабрь, затем сентябрь.)

Вместо этого используйте IsDate(), чтобы убедиться, что вы действительно работаете с действующими датами , а затем используйте DateDiff("d", date1, date2), чтобы определить, какая дата будет позже. Если date1 больше (происходит позже), чем date2, результат будет меньше 0. (Вы можете использовать любой интервал вы хотите, но "d" на «количество дней», вероятно, является наиболее полезным.)

Это особенно важно, если вы работаете с пользователем: даже если мы игнорируем проблему злонамеренного намерения, у людей есть, um, интересные идеи о том, как написать дату.