2012-05-31 5 views
1

나는 1.1.1970 년 이후로 마이크로 초 단위로 타임 스탬프를 얻었습니다. 나는마이크로 초 단위로 2 시간 분실 됨

  yyyy.MM.dd HH.mm.ss.ffffff 

으로 변환하려고 시도했습니다. 예 : 1337060932000000 마이크로 초 결과는 2012 년 5 월 15 일이어야합니다. 2012 년 5 월 15 일, 7.48

그러나 결과는 2 시간입니다. 그 이유는 무엇일까요?

+2

아마도 시간대는? – assylias

+0

글쎄 UTC 일 수도 있습니다! ! 어떻게 지내세요? – V4Vendetta

+0

현지 시간차 및 일광 절약 시간을 고려하십시오. –

답변

1

힌트를 보내 주셔서 감사합니다.

int offset = 2; 
    DateTime d = new DateTime(1979,1,1, offset,0,0); 

이 예를 단순화된다 나는 이러한 방식으로 문제를 해결했다. 오프셋은 외부 파일에 지정되므로 다른 시간대에 맞게 쉽게 수정할 수 있습니다.

2

Unix 시대가이 시간대이기 때문에 UTC 날짜를 얻는 것이 가장 가능성이 높습니다. 당신이 뭔가를 할 수 있다는 것을 일단

var epoch = new DateTime(1970,1,1, 0,0,0, DateTimeKind.Utc); 

: 위에서 제공 한 값이

var localTime = epoch.AddMilliseconds(microseconds/1000).ToLocalTime(); 

microseconds 경우, 당신이 얻을 값이 15/05/2012 07:48:52 당신이 그래서 기본 날짜를 만들 수 있는지 확인 네가 예상 한대로 네.

ToLocalTime을 사용할 때는주의해야합니다. 소프트웨어가 실행되는 컴퓨터의 현지 표준 시간대라는 것을 확신 할 수 있기 때문에, 경험상 항상 생각하는 시간대라고는 할 수 없습니다.

관련 문제