2009-08-31 9 views

Respuesta

3

Convierta su enviado del servicio WCF a UTC, y cuando cree nuevos tiempos en su cliente, especifíquelos como tipo UTC. Esto basará el tiempo en la zona horaria estándar universal. Puede mostrar la hora a su cliente y asegurarse de identificarla como hora UTC. Eso aliviará cualquier discrepancia o ambigüedad acerca de lo que ese tiempo realmente es.

DateTime serverTimeRaw = myService.GetServerTime(); 
DateTime serverTimeUTC = new DateTime(serverTimeRaw.Ticks, DateTimeKind.Utc); 
Console.WriteLine(serverTimeUTC); // Prints server time as UTC time 

Si realmente se necesita para representar veces en su zona horaria correspondiente, se tendrá que enviar la información de zona horaria junto con el DateTime. Yo recomendaría crear un tipo que encapsule ambas partes de la información y la devuelva, en lugar de un DateTime. La información de zona horaria no es un componente intrínseco de DateTime. Esas son dos preocupaciones separadas, y solo proporcionan un significado compuesto cuando se compusieron realmente.

class ZonedDateTime 
{ 
    public DateTime DateTimeUtc { get; set; } 
    public TimeZoneInfo TimeZone { get; set; } 

    public DateTime ToDateTime() 
    { 
     DateTime dt = TimeZoneInfo.ConvertTime(DateTimeUtc, TimeZone); 
     return dt; 
    } 
} 

// ... 

ZonedDateTime zdt = myService.GetServerZonedTime(); 
DateTime serverTimeActual = zdt.ToDateTime(); 
Cuestiones relacionadas