C # DateTime a la hora UTC sin cambiar la hora

124

¿Cómo convertiría una fecha y hora preexistente a la hora UTC sin cambiar la hora real?

Ejemplo:

DateTime dateTime = GetSomeDateTime(); // dateTime here is 3pm
dateTime.ToUtcDateTime() // datetime should still be 3pm
Luke Belbina
fuente
¿Estás en PST ? ¿Cómo se obtiene PSTvalor?
Kiquenet

Respuestas:

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

de

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);
tofutim
fuente
50

Usa el DateTime.SpecifyKindmétodo estático.

Crea un nuevo objeto DateTime que tiene el mismo número de ticks que el DateTime especificado, pero se designa como hora local, Hora universal coordinada (UTC) o ninguna de las dos, según lo indicado por el valor DateTimeKind especificado.

Ejemplo:

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
Liam
fuente
18

Puede usar el constructor sobrecargado de DateTime:

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

También puedes hacerlo de esta manera:

DateTime utcDateTime = new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime();
Reyan Chougle
fuente
Esto puede no funcionar como se esperaba. Prueba ... new DateTime(dateTime.Year, dateTime.Month, dateTime.dateTimeay, dateTime.Hour, dateTime.Minute, dateTime.Second).ToUniversalTime().ToString() vs DateTime.SpecifyKind(dateTime, DateTimeKind.Utc).ToString() Verás que obtienes resultados diferentes.
Homer
-7

Usa el DateTime.ToUniversalTimemétodo.

Femaref
fuente
3
eso cambia la fecha Hora a las 11 p.m. (estoy en PST)
Luke Belbina