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

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

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

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

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.