2012-01-19 3 views
2
내가 (하지만 대답과 함께.) 대답 할 필요 그래서 신용 여기 this guy 내 질문은에 똑같은 질문을 또 다른 포럼 웹 사이트를 발견 할 때까지 나는이 문제를 설명 기대하지 않은

...클라이언트 시간대 대신 SET 시간대를 사용하도록 .NET WinForms 구성 요소를 얻으려면 어떻게해야합니까?

우리는 클라이언트의 데스크톱에 이 설치되는 큰 Windows .Net 응용 프로그램 (winform 실행 파일)을 가지고 있습니다. 이 응용 프로그램은 다른 시간대의 서버에서 웹 서비스를 호출합니다. 사실 거의 모든 날짜 지향 구성 요소는 표준 시간대 차이를 감지하고 자동으로 (대부분의 응용 프로그램에서 일반적으로 바람직하지만 "날짜"인 회계 관련 응용 프로그램에서 문제가되는 datetime 값 (SQL 쿼리에서 생성 된 데이터 세트에서 반환 됨)을 조정합니다. "datetime"지향. 우리는 "날짜"부분에만 관심이 있습니다. 그러나 1/1/2003 GMT-5의 날짜는 클라이언트에서 12/31/2002 11:00 GMT-6으로 자동 변환됩니다. 코드를 모두 통과하고 UniversalTime을 추출하여 시각적 목적으로 다시 가져 오려면 클라이언트 측 실행 파일의 시간대를 단순히 가짜로 만들고 싶습니다. 같은 시간대 서버.

질문 : 전역 설정이 아닌 현재 실행중인 인스턴스 인 에 대해 프로그래밍 방식으로 TimeZone을 설정할 수 있습니까?

Google의 정확한 문제이므로 추가 할 항목이별로 없습니다. 여기서는 원격 SQL 데이터를 데이터 집합으로 가져온 다음 ActiveReports를 사용하여 보고서를 데이터 집합에 바인딩합니다. 따라서 예를 들어, 생일은 잘못되었지만 X 시간은 서부 시간대의 날짜를 뺍니다. 그래서 생일은 마이너스 1을 벗어났습니다.

어떤 생각?

감사합니다.

세스

+0

사용하는 .NET 버전은 무엇? System.DateTime 및 시간대에 대한 .NET2의 일부 변경 사항이있었습니다 (System.DateTime.Kind가 추가되었습니다). DateTime이라고 가정 할 때 System.DateTime.Kind의 값은 무엇입니까? 데이터베이스의 데이터 유형이 무엇입니까 (예 : SQL Server에 몇 가지 옵션이 있음)? 클라이언트에서 쿼리를 실행하고 (또는 System.Data.DataSet에 배치) 아니면 ActiveReports에 쿼리를 제공하고 있습니까? 클라이언트의 데이터 형식은 무엇입니까? System.DateTime 또는 System.DateTimeOffset? –

답변

-1

우리는이 문제는 날짜의 문자열 표현을 직렬화하는 것입니다 해결 방법입니다.

문자열 날짜에 대한 속성 구현은 실제 날짜 속성과의 적절한 변환을 수행합니다. 예를 들어

:

[NonSerialized] 
    public DateTime MyDate { get; set; } 

    [System.Xml.Serialization.XmlAttribute("MyDate")] 
    public string MyDateString 
    { 
     get 
     { 
      if (MyDate.Equals(DateTime.MinValue)) 
      { 
       return string.Empty; 
      } 
      else 
      { 
       return MyDate.ToShortDateString(); 
      } 
     } 
     set 
     { 
      DateTime dtTemp = DateTime.MinValue; 
      if (DateTime.TryParse(value, out dtTemp)) 
      { 
       MyDate = dtTemp; 
      } 
      else 
      { 
       MyDate = DateTime.MinValue; 
      } 
     } 
    } 
+0

답장을 보내 주셔서 대단히 감사합니다. 나는 이것을 지원하기 위해 우리의 응용 프로그램을 다시 엔지니어링해야 할 것이라고 의심하지 않았습니다. 나는 무엇을 여기에서 놓쳤 느냐? –