2011-06-01 22 views
80

Cómo convertir una hora de fecha preexistente a hora UTC sin cambiar la hora real.C# DateTime to UTC Hora sin cambiar el tiempo

Ejemplo:

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

Usted está en *** *** PST? ¿Cómo se obtiene el valor 'PST'? – Kiquenet

Respuesta

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

utiliza el método DateTime.ToUniversalTime.

+0

que cambia el dateTime a las 11pm (estoy en PST) –

10

Puede utilizar el constructor sobrecargado de DateTime:

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

Utilice el método estático DateTime.SpecifyKind.

Crea un nuevo objeto DateTime que tiene el mismo número de garrapatas como el DateTime especificado, pero se designa ya sea como la hora local, Tiempo Universal Coordinado (UTC), o ninguno, como se indica 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 
Cuestiones relacionadas