2011-10-19 4 views
2

우리는 유닉스 타임 스탬프와 C# DateTime 객체를 처리해야하는 C# 웹 응용 프로그램을 개발 중입니다. 타임 스탬프는 DateTime 객체로 변환되어야합니다.C# : 유닉스 타임 스탬프와 날짜 시간

다음의 예는 내 문제를 보여줍니다 날짜 시간은 '18 .10.2011 14시 2분 32초 '

System.DateTime time = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 
time = time.AddSeconds(1318939352); 
System.Console.Out.WriteLine("Time: " + time); // -> 18.10.2011 12:02:32 

내 개발자 컴퓨터에 ToLocalTime()를 호출하는 경우, 날짜 시간이 정확해야한다 :

System.DateTime time = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); 
time = time.AddSeconds(1318939352).ToLocalTime(); 
System.Console.Out.WriteLine("Time: " + time); // -> 18.10.2011 14:02:32 

하지만 응용 프로그램이 다른 표준 시간대 (GMT 표준 시간)에 호스팅되는 서버에서 실행되므로 다른 표준 시간대를 처리해야하며이 서버에서는 두 번째 예제가 실패합니다. 응용 프로그램을 호스팅하는 곳과 관계없이이 경우 날짜는 항상 18.10.2011 14:02:32로 인쇄해야합니다.

아무도 내가 이것을 할 수있는 방법을 알고 있습니까? 미리 감사드립니다!

최고 감사합니다, 토르스텐

+1

왜'DateTimeKind.Utc'를 지정하지 않는 모습, 그 작업을 수행 할 수 있습니다? '새로운 System.DateTime (1970, 1, 0, 0, 0, 0, DateTimeKind.Utc);'(희망 14시 2 분 32 초는 GMT) – V4Vendetta

+0

은 항상 UTC로 시간을 저장합니다. 클라이언트 응용 프로그램은 출력을 위해 형식화 된 시간을 원하는 방식으로 서버에 알립니다. – Angelom

+0

@ V4Vendetta - 14:02:32는 GMT + 2입니다. – Polity

답변

0

당신은 인스턴스를 만들 때 TimeZoneInfo

public struct DateTimeWithZone 
{ 
    private readonly DateTime utcDateTime; 
    private readonly TimeZoneInfo timeZone; 

    public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone) 
    { 
     utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZone); 
     this.timeZone = timeZone; 
    } 

    public DateTime UniversalTime 
    { 
     get { return utcDateTime; } 
    } 

    public TimeZoneInfo TimeZone 
    { 
     get { return timeZone; } 
    } 

    public DateTime LocalTime 
    { 
     get { return TimeZoneInfo.ConvertTime(utcDateTime, timeZone); } 
    }   
} 
관련 문제