시간을 변경하지 않고 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.