시간을 변경하지 않고 C # DateTime에서 UTC 시간으로


124

실제 시간을 변경하지 않고 기존 datetime을 UTC 시간으로 어떻게 변환합니까?

예:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm

당신은 PST에 있습니까? PST가치를 어떻게 얻 습니까?
Kiquenet

답변:


207
6/1/2011 4:08:40 PM Local
6/1/2011 4:08:40 PM Utc

...에서

DateTime dt = DateTime.Now;            
Console.WriteLine("{0} {1}", dt, dt.Kind);
DateTime ut = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
Console.WriteLine("{0} {1}", ut, ut.Kind);

50

DateTime.SpecifyKind정적 방법을 사용하십시오 .

지정된 DateTime과 틱 수가 같지만 지정된 DateTimeKind 값에 표시된대로 현지 시간이나 UTC (협정 세계시)로 지정되거나 둘 다 지정되지 않은 새 DateTime 개체를 만듭니다.

예:

DateTime dateTime = DateTime.Now;
DateTime other = DateTime.SpecifyKind(dateTime, DateTimeKind.Utc);

Console.WriteLine(dateTime + " " + dateTime.Kind); // 6/1/2011 4:14:54 PM Local
Console.WriteLine(other + " " + other.Kind);       // 6/1/2011 4:14:54 PM Utc

18

오버로드 된 생성자를 사용할 수 있습니다 DateTime.

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second, DateTimeKind.Utc);

0

이 방법으로도 할 수 있습니다.

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();

예상대로 작동하지 않을 수 있습니다. 시도 ... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() 당신은 다른 결과를 얻을 것입니다.
Homer

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.