C# DateTime в UTC время без изменения времени


Как бы я преобразовал ранее существовавшее время datetime в время UTC без изменения фактического времени.

пример:

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

4 ответа:

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);

использовать DateTime.SpecifyKind статический метод.

создает новый объект DateTime, который имеет то же количество тиков, что и заданное DateTime, но обозначается как локальное время, координированное универсальное время (UTC) или ни то, ни другое, как указано указанным значением DateTimeKind.

пример:

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

Вы можете использовать перегруженный конструктор DateTime:

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

использовать DateTime.ToUniversalTime метод.