#asp.net #vb.net #date #parsing #datetime
#asp.net #vb.net #Дата #синтаксический анализ #дата и время
Вопрос:
Я пытаюсь проанализировать дату в vb.net как показано ниже.
Dim EndDate As Date = Date.Now.ToString("yyyy-MM-dd")
If Date.TryParseExact(txtEndDate.Text, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, EndDate) Then
EndDate = txtEndDate.Text
Else
txtEndDate.Text = EndDate
End If
Я не могу понять, почему мой приведенный выше код выводит 00:00:00
ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ
Если введенная дата не является допустимой ISO
датой "yyyy-MM-dd"
, то
Установите txtEndDate.Text
и EndDate
на сегодняшний день как ** ISO
.
ПРИМЕР
если я передам в 2016-15-10
EndDate
устанавливается в #10/15/2016 12:00:00 AM#
если я передам в asfd
EndDate
устанавливается в #1/1/0001 12:00:00 AM#
Комментарии:
1. Последним аргументом должна быть дата, чтобы сохранить результат, вы передаете строку.
Function TryParseExact(s As String, format As String, provider As System.IFormatProvider, style As System.Globalization.DateTimeStyles, ByRef result As Date) As Boolean
2. Даже когда я устанавливаю переменную в качестве даты, результат равен 1/1/0001 12:00:00 утра
3. какое значение вы анализируете?
4. Смотрите пример выше
5. Вы проверяете (анализируете) строку. Как правило, если это не удается, вам нужны новые входные данные (понятия не имею, откуда они берутся, пользователь?). Обратите внимание, что совершенно хорошая дата, подобная
2016-10-5
этой, также не будет работать с этой строкой формата, потому что день неdd
является или ’05`. «гггг-М-д» будет анализировать 1 или 2 цифры формы
Ответ №1:
Не могли бы вы просто сделать это:
Dim EndDate As String = Date.Now.ToString("yyyy-M-d")
If Not Date.TryParseExact(txtEndDate.Text, "yyyy-M-d", CultureInfo.InvariantCulture, DateTimeStyles.None, EndDate) Then
txtEndDate.Text = Date.Now.ToString("yyyy-M-d")
End If
Если он будет успешным, то EndDate
будет возвращен, как и ожидалось, однако, если нет, то просто установите значение сегодня, как указано выше.
Комментарии:
1. Ну, если ты хочешь быть в этом полностью логичным. Иногда очевидное ослепляет. 🙂