2012-08-28 3 views
2

우리는 최근에했던 코드 중 인터넷 4로 VB6에서이 줄을 몇 가지 코드를 마이그레이션 : 고객의VB6의 CDate는 VB.NET 버전과 어떻게 다릅니 까?

If Now<CDate("28-08-2012") Then

하나 때문에 프로그램 오류로 지원을 연락을하며 자신의 컴퓨터에 오류가 발생 떠올랐다 이 줄은 그가 로케일을 영어 (미국)로 설정했기 때문입니다. 그것이 VB6 인 동안 똑같은 코드는 폭탄을 투하하지 않았습니다.

이렇게 차이점을 어떻게 설명 할 수 있습니까?

+1

"더 나은"또는 "더 나쁜"가정은 잘못된 질문입니다. –

+0

@pst 글쎄, 폭탄보다 폭탄을 사용하는 것이 낫지 않습니다 .-) 이전 VB6 코드를 디버깅하고 IDE가있는 컴퓨터의 로케일을 En-us에 설정하면 코드가 "28-08-2012 "~"8/28/12 ". 따라서 Vb6은 다른 방법을 사용하여 사용할 로컬 설정을 찾습니다. – Dabblernl

+0

예, 키워드는 "다름"입니다. 아마도 VB6가 지역 설정을 선택하는 방법과 관련이 있습니다 http://stackoverflow.com/questions/1059930/a-better-cdate-for-vb6 –

답변

2

(난 그냥 인터넷 코드에서 모든 CDate 기능을 찢어하고 YYYY하여 대체 마무리하고, mm은 DateTime 생성자를 dd는) 내가 여기에 문제가 (슬프게도) 오버 열심을 구문 분석 생각 VB6에서 CDate에 대한 루틴. (그 문제와 VBA) 영어 (미국), VB6로 설정 로케일이 두 표현에 대해 동일한 날짜를 반환합니다 함께 :

CDate("12-13-2000") 
CDate("13-12-2000") 

을 둘 다/2,000분의 13 # 12 #을 반환합니다. 첫 번째 숫자를 한 달 (예 : 13)으로 변환 할 수없는 경우 분명히 그 달의 날짜로 가정합니다 (매우 나쁜 가정).

그렇습니다.

관련 문제