2012-09-18 4 views
4

내 컴퓨터가 PDT에 있고 DateTime.Now라고 말하면 9 월 18 일 6:00:00에 해당하는 현지 시간이 생깁니다. 이 datetime 인스턴스에 대해 UTC를 사용하고 싶습니다. UTC 시간은 태평양 표준시보다 7 시간 앞당겨지고 태평양 표준시보다 8 시간 앞당겨집니다. 나는 일광 절약 시간제를 자동적으로 고려하고 싶다.C#에서 현지 시간으로 UTC를 얻는 방법

어떻게 할 수 있습니까?

답변

11

당신은이 시간대 정보을 가지고 가정, 기존의 날짜 시간을 변환하려면

var now = DateTime.UtcNow; 

을 사용할 수 있습니다, 당신은 DateTime.ToUniversalTime()을 사용할 수 있습니다. 예를 들어 DateTime 인스턴스를 가져 오는 경우

var localNow = DateTime.Now; // Has timezone info 

시간대 정보가 있습니다. 예를 들어 틱 수를 사용하면 명시 적으로 지정하지 않으면 시간대 정보가 포함되지 않습니다.

var unspecifiedNow = new DateTime(someTickCount); // No timezone info 

.NET의 표준 시간대 처리가 최적이 아니라는 점을 언급 할 가치가 있습니다. 시간대와 관련된 모든 작업을 수행해야하는 경우 Noda Time (프로젝트는 Jon Skeet)을보고 싶을 수 있습니다.

8

날짜 시간을 사용하십시오. ToUniversalTime 방법.

+1

후드 .net에서 로컬 시간으로 'DateTime.UtcNow'를 변환 할 것이므로'ToUniversalTime '을 실행하면 0 대신 2 회의 변환이 수행됩니다. – Yaur

4

이 작업을 수행 UTC에 시간대에서 모든 날짜를 변환 할 경우

TimeZone.CurrentTimeZone.ToUniversalTime(myLocalDateTime) 

당신이 UTC에서 다시 변환 할 경우 지금의 특별한 경우에

TimeZone.CurrentTimeZone.ToLocalTime(myUtcDateTime) 
관련 문제