2010-07-28 36 views
6

Tengo una variable Timespan, que tiene tiempo en la zona horaria local pero para una base de datos (tiempo de tipo frío) Necesito pasar UTC. ¿Cómo hago esto? También necesito obtener la hora UTC local para llenar la variable Timespan en pageLoad. ¡Gracias!intervalo de tiempo y UTC

Respuesta

10

Supongo que cargaría el TimeSpan en un DateTime, luego obtendría la hora universal del DateTime y la convertiría de nuevo.

var dt = new DateTime(timeSpan.Ticks); 
var utc = dt.ToUniversalTime(); 
+0

Siguiendo no convertirá 20:00 oriente correctamente a UTC Dim dt Como Nueva DateTime (time.Ticks) \t \t dt = dt.ToUniversalTime() \t \t Dim dtUniversal Como New TimeSpan (dt.Ticks) – user228777

+0

¿Las garrapatas representan cosas diferentes quizás? Los diferentes sistemas utilizan diferentes representaciones de ticks, generalmente la fecha para comenzar a contar milisegundos. Si puede convertir su período de tiempo en valores específicos para el año, mes, día, etc., puede construir un DateTime a partir de esos valores y luego convertirlo a UTC. – devios1

+0

Como sugirió, ¿Cómo construyo datetime? Todo lo que estoy almacenando en la base de datos es hora y los minutos y segundos predeterminados son siempre 00. ej. Mi valor almacenado es 01:00:00 ¿cómo convierto esto a dateTime? - Gracias – user228777

3
TimeSpan LocalTimeToUTCTime(TimeSpan localTime) 
{ 
    var dt = new DateTime(localTime.Ticks); 
    var utc = dt.ToUniversalTime(); 
    return new TimeSpan(utc.Ticks); 
} 
2
class TimeConversion 
{ 
    public static TimeSpan LocalTimeSpanToUTC(TimeSpan ts) 
    { 
     DateTime dt = new DateTime(ts.Ticks).AddDays(1); 
     DateTime dtUtc = dt.ToUniversalTime(); 
     TimeSpan tsUtc = dtUtc.TimeOfDay; 

     return tsUtc; 
    } 

    public static TimeSpan UTCTimeSpanToLocal(TimeSpan tsUtc) 
    { 
     DateTime dtUtc = new DateTime(tsUtc.Ticks).AddDays(1); 
     DateTime dt = dtUtc.ToLocalTime(); 
     TimeSpan ts = dt.TimeOfDay; 

     return ts; 
    } 
} 
+1

¿Cuál es el motivo de AddDays (1)? – Miles

Cuestiones relacionadas