Я пытаюсь преобразовать формат в String
к более Date
, используя этот код:DateTime.ParseExact не был признан действительным DateTime
Debug.Print(Trim(oTable.Cell(i + 1, 2).Range.Text.Replace(vbCr, "").Replace(vbLf, "")))
Tabledate = DateTime.ParseExact((Trim(oTable.Cell(i + 1, 2).Range.Text.Replace(vbCr, "").Replace(vbLf, ""))), "dd/MM/yy", CultureInfo.InvariantCulture)
Debug.Print
линия дает мне результат 30/12/15
, но DateTime.ParseExact
линия всегда возвращает ошибку, говорящую, что строка не является допустимым форматом DateTime? Я что-то упускаю?
Примечание: Я должен удалить отставая возврата carragies, поскольку строка поступает из таблицы в слове, и по какой-то причине вытаскивает возвращение на конец строки
UPDATE 1
Прибегая к отчаянным мерам, я включил следующие в моем коде:
For Each A As Char In oTable.Cell(i + 1, 2).Range.Text
Debug.Print(A)
Next
Это печатает результат:
3
0
/
1
2
/
1
5
(extra blank char)
(extra blank char)
Я понятия не имею, где и что это за пустые символы, я попытался заменить vbTab
на ничего, но это не имеет значения. Возможно, стоит отметить, что строка изначально была из таблицы в слове, может ли факт, что ее в ячейке на столе имеет какое-то отношение к тому, что представляют собой эти пустые символы?
UPDATE 2
Изменен код отладочный:
For Each A As Char In oTable.Cell(i + 1, 2).Range.Text
Debug.Print(CInt(AscW(A)))
Next
Возвращается:
51
48
47
49
50
47
49
53
13
7
, который я считаю, означает 13 возврат каретки (хотя это должно было быть отрезано), а 7 - «звонок» (я не знаю, что такое звонок)
Обновленный вопрос, я хотел оставить его там, если команда 'Trim' или' Replace' является причиной ошибки. Возвращенная строка в вопросе справедлива, его '30/12/15' – SilverShotBee
Невозможно воспроизвести с использованием константы« 30/12/15 », поэтому здесь есть что-то непонятное. Какова ваша реальная информация о локали? – Steve
@SilverShotBee: возможно, есть и другие невидимые персонажи, такие как 'VbTab' внутри. –