프로그래밍/델파이

사용자 환경에 따른 날짜형식 변환 오류에 대한 해결 방법

채윤아빠 2011. 2. 9. 10:37
728x90
반응형
문자열(string)을 날짜형식(TDateTime)으로 변환할 경우가 많은데, 특정 PC에서만 다음과 같이 형식이 올바르지 않다는 오류가 발생하는 경웅가 있습니다.


날짜 형식에 문제가 없는 문자열임에도 불구하고 나는 오류라 살짝 당황스러울 수 있는 부분이나, 이는 사용자 PC의 국가 및 언어설정이 일반 PC와는 조금 다르게 설정되어 있기 때문입니다. 제어판에 보면 "국가 및 언어설정"을 설정하는 부분이 있는데, 이곳에 날짜 구분자가 일반적으로는 하이픈("-")으로 되어 있지만, 위 문제가 발생한 고객의 PC에서는 필요에 의하여 다른 문자로 변경되어 있는 경우, StrToDateTime 함수 호출시 위 그림과 같은 오류가 발생하게 됩니다.


일반적으로 간단한 날짜 형식이 "yyyy-MM-dd"로 되어 있는데, 위 그림과 같이 "yy'.'MM'.'dd'. ('ddd')'"형식으로 되어 있어서 일반적인 날짜 형식의 문자열이 제대로 변환되지 못합니다.

이 문제의 해결 방법은 두 가지를 생각해 볼 수 있습니다. 첫 번째 방법은 "국가 및 언어"에서 날짜 형식을 원래대로 되돌리는 겁니다. 그러나 이렇게 하면 사용자가 원하는 날짜 형식으로 보던걸 바꿔 버리므로 바람직하지 않은 방법입니다.

두 번째 방법은 델파이 프로젝트에서 최초 실행되는 유닛의 실행부에 다음과 같은 코드를 삽입하여 날짜 구분 기호가 하이픈("-")임을 강제로 설정하는 방법이 있습니다. 이렇게 하면 사용자가 원하는 형태대로 확인할 수 있고 날짜 형식 변환에도 오류가 없어집니다.

     DateSeparator := '-';