2012-01-09 4 views
2

지역 설정과 관계없이 애플리케이션 (D2006)을 작성해야합니다. 가장 중요한 모든 날짜 형식은 동일해야합니다.Delphi - 지역 설정과 무관 한 애플리케이션

구걸하기 때문에 모든 FormatDateTime ('adateformate')을 FormatDateTime ('aConstantDefined')로 바꾸고 싶습니다. 또한 Application.UpdateFormatSettingsApplication.UpdateMetricSettings은 False로 설정해야합니다.

내가해야 할 사항이 있습니까?

LE : 문제는 내가 2 개의 다른 국가 별 설정이 있고 사용자가 설정을 균일하게하고 싶지 않다는 것입니다. 나는 그것이 이상하게 들린다는 것을 알고있다. 그러나 이것은 사실이다. 그래서, 이것이 내가 나의 신청서를 지역 설정과 완전히 독립적으로 만들어야하는 이유입니다.

+1

그렇습니다.하지만 왜 지역 설정을 무시 하시겠습니까? 그것은 당신의 사용자에게 정확하게 친절하지 않습니까? –

+0

"지역 설정과 무관합니다."라는 말은 u 로컬 시스템 날짜/시간/소수 구분 기호를 무시하고 싶다고 말하는 것입니까? – PresleyDias

+0

@all - 내 LE를 읽으십시오. 고맙습니다. – RBA

답변

8

자신의 TFormatSettings 레코드를 적용하십시오. 적절한 경우 FormatDateTime('aConstantDefined',ADateTime,myFormatSettings)으로 전화하십시오.

응용 프로그램이 시스템 형식 설정을 변경하면 사고를 피할 수 있습니다. Application.UpdateFormatSettingsApplication.UpdateMetricSettings을 사용할 필요가 없습니다.

업데이트 :

나는 지역 설정과 관련된 모든 형식 문자열 기능의 TFormatSettings 과부하 매개 변수를 사용하는 것을 추가해야합니다. 응용 프로그램을 스레드로부터 안전하게 만드는 데 자주 사용되지만 지역 설정을 재정의 할 때 유용합니다. 필자는 통신/저장 목적으로 데이터를 serialize/deserialize 할 때이 기술을 자주 사용합니다.

+0

날짜를 내부적으로'TDate' 나'TDateTime'이 아닌 문자열로 조작한다면 꽤 안전해야합니다. 진짜 문제는 당신이 다른 시간대를 가지고있을 때입니다! (아, 돈도 번거 롭습니다.) –

+1

@ 레오나르도 헤레라, 돈은 항상 번거 로움입니다 :). 예, 데이터를 최상의 형식으로 유지하고 I/O 중에 필요한 변환 만 수행하십시오. –

+0

@LeonardoHerrera : 로컬 머신의 타임 존 오프셋 (offset)로 입력을 조정하면 (자), UTC의 일자/시각 치를'TDateTime'에 격납 할 수 있습니다. 컴퓨터가 UTC 0에서 실행되는 것처럼 대부분의 작업에 대해 'TDateTime'을 정상적으로 사용할 수 있습니다. 로컬 타임 스탬프 값과 비교할 때마다 로컬 시간대를 고려하여 문자열로 다시 변환합니다. –

관련 문제