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


124

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

Пример:

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

Вы в PST ? Как получить PSTценность?
Kiquenet 01

Ответы:


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, который имеет то же количество тактов, что и указанный 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

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() Вы увидите, что получите разные результаты.
Гомер

-7

Воспользуйтесь DateTime.ToUniversalTimeметодом.


3
который изменяет dateTime на 23:00 (я нахожусь в тихоокеанском стандартном времени)
Люк Белбина,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.