2011-09-20 7 views
0

이전에 질문을 받으면 올바른 방향으로 알려주십시오. 나는 google-ing 기술로 유용한 것을 찾을 수없는 것 같습니다.VBA format() 또는 CDate()를 사용하여 문자열을 날짜로 변환하는 문제

다음과 같은 코드가 있습니다. 정전 STARTDATE : 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 


과 날짜 정보를 꺼내서 05/10/11 23시 59 분 (동부 표준시), 이것은 내가 일반적으로 무엇을 얻을 출력 :

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 완전히 날짜 OBJE에 날짜 문자열로 변환 ... 1931과 같은 사항에 어떤 도움을 날짜로 변환, 주변에 물건을 거즈 CT는 크게 감사하겠습니다.

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

편집 : 아마 초기 게시물이 언급해야한다. 문자열을 읽은 뒤에있는 생각은 Date 객체로 변환하여 일정 약속을 만들 수 있습니다. 현재 이것을 사용합니다. dStartTime와 = "2029년 11월 9일 11시 : 내가 생각

dStartTime = CDate(sStartTime) 

는 ="29/09/11 23시 "(mm 일/월/년 HH) sStartTime 문제 라인 : 00 PM "

분명히 거기에는 몇 가지 변환 문제가 있습니다. 그러나 어떤 형식 으로든 CDate 기능을 사용하기 위해서는 무엇을해야할지 모릅니다. 29/09/11 23:00 동등한 날짜 개체.

+0

컴퓨터 제어판의 날짜 및 시간 설정은 무엇입니까? 당신은 미국과 다른 날짜 형식이 혼합되어있는 것처럼 보입니다. 날짜 문자열은 모호하지 않으므로 문제가 발생할 수 있습니다. – Fionnuala

+0

Gosh ... 문서에서 시스템 날짜/시간을 사용하여 변환을 수행한다고 명시하고 싶습니다. 내 날짜/시간이 m/dd/yyyy 및 표준 hh : mm AM/PM 시간으로 설정되어 있습니다. 문자열을 변환하는 가장 좋은 방법은 무엇입니까? 시스템 시간 또는 문자열 입력 방식을 변경할 수 없습니다. – FizzBuzz

+0

입력 문자열에 EST가 표시되어 시스템 날짜와 마찬가지로 미국 날짜임을 나타내므로 일이 쉬워 져야하지만, 완전한 자신감을 위해 DateSerial을 사용하는 것이 가장 좋습니다. http://msdn.microsoft.com/en-us/library/gg264202.aspx – Fionnuala

답변

5

Format(sStartTime, "dd/mm/yy hh:mm")은 sStartTime이 문자열이 아니고 날짜가 아니기 때문에 올바르게 작동하지 않습니다.
당신은 당신이 올바르게 포맷 기능을 적용 할 수있을 것입니다, THEN
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...) 등 ...
처럼 정확히 입력 날짜를 얻기 위해 몇 가지 추가 작업을해야합니다.

+0

대우! 매우 감사! – FizzBuzz

관련 문제