3Newbie97Programmer Ответов: 2

Преобразование из строки В тип "дата" недопустимо.


Нужна помощь строковое значение приходит из текстового поля.
я не могу использовать datetimepicker, потому что текстовое поле состоит из другого значения..

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

If ItemBox1.Text <> "" Then
           I1 = "20" & Mid(ItemBox1.Text, 16, 4) & "01"
           Dim I1Date As DateTime = DateTime.ParseExact(I1, "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture)
           Dim dayApart As TimeSpan = Today.Subtract(I1Date)
           Dim diff As Double = dayApart.TotalDays
           If diff > expiryDate.Text Then
               lblmessage.Text = "*"
           Else
               'do nothing'
           End If
           'do nothing'
       End If

2 Ответов

Рейтинг:
20

Atlapure Ambrish

Вы должны использовать дату.TryParseExact, ниже приведен пример.

Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String
      Dim dateValue As Date

      ' Parse date with no style flags.
      dateString = "20091223"
      If Date.TryParseExact(dateString, "yyyyMMdd", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If


Ссылаться этот более подробный.


Рейтинг:
2

OriginalGriff

Используйте TryParseExact вместо ParseExact - он возвращает логическое значение, указывающее, что синтаксический анализ был в порядке или плохо. Если это плохо, сообщите о проблеме пользователю, чтобы он мог исправить ее и не продолжать.

Вы никогда не должны полагаться на пользователей, чтобы сделать это правильно: они делают ошибки ввода все время, точно так же, как вы и я.