VBA Проблемы с преобразованием строки в дату с использованием format () или CDate () - PullRequest
0 голосов
/ 20 сентября 2011

Если об этом уже спрашивали, пожалуйста, укажите мне правильное направление.Кажется, я не могу найти ничего полезного с моими навыками в Google.

У меня есть следующий код, который читается в такой строке;Отключение StartDate: 05/10/11 23:59 EST
И извлекает информацию о дате, т. Е. 05/10/11 23: 59

sStartTime = Mid(objItem.Body, 18, 15) ' Extract the start time
Debug.Print "sStartTime after reading: " & sStartTime
sStartTime = Format(sStartTime, "dd/mm/yy hh:mm") ' Format date correctly
Debug.Print "sStartTime after formatting: " & sStartTime

Вот что я обычно получаю:

sStartTime after reading:  05/10/11 23:59
sStartTime after formatting: 10/05/11 23:59

Но иногда это меняет даже день и год:

sStartTime after reading:  14/07/11 23:59
sStartTime after formatting: 11/07/14 23:59

Затем CDate полностью объединяет вещи, превращая даты в такие вещи, как 1931 ... любая помощь в преобразовании строки даты вобъект даты был бы очень признателен.

===============

Редактировать: Возможно, следовало упомянуть об этом в первоначальном посте.Идея, лежащая в основе чтения строки, заключается в преобразовании в объект Date, чтобы я мог создать встречу в календаре.В настоящее время я использую это;

dStartTime = CDate(sStartTime)

Я считаю, что это проблемная строка, sStartTime = "29/09/11 23:00" (дд / мм / гг чч: мм) и dStartTime = "11 /9/2029 11:00:00 PM "

Очевидно, что там происходят некоторые проблемы с конвертацией, но я понятия не имею, какой формат я собираюсь передать функции CDate, чтобы включить 29 /09/11 23:00 в эквивалентный объект даты.

1 Ответ

5 голосов
/ 20 сентября 2011

Format(sStartTime, "dd/mm/yy hh:mm") не может корректно работать, поскольку sStartTime - это строка, а не дата.
Вам необходимо проделать дополнительную работу, чтобы получить правильно набранную дату, например
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...) и т. Д.
ПОТОМ вы сможете правильно применить свою функцию форматирования.

...