Tengo un problema al convertir las fechas entre mi servidor y el cliente donde ambos se ejecutan en Alemania. La configuración regional en las máquinas del cliente podría establecerse tanto en el Reino Unido como en Alemania. Recibo una fecha del servidor que es formato CET, y necesito representar esta vez en la interfaz de usuario como hora del Reino Unido. Por ejemplo, un tiempo recibido del servidor como digamos, 01/07/2010 01:00:00 debe estar representado en la interfaz de usuario como 01/07/2010 00:00:00. He escrito un convertidor para este propósito, sin embargo, mientras lo ejecuto recibo una diferencia horaria de 2 horas. A continuación está el código, ¿pueden ayudarme?¿Cómo representar la hora actual del Reino Unido?
public class LocalToGmtConverter : IDateConverter
{
private readonly TimeZoneInfo timeZoneInfo;
public LocalToGmtConverter()
: this(TimeZoneInfo.Local)
{
}
public LocalToGmtConverter(TimeZoneInfo timeZoneInfo)
{
this.timeZoneInfo = timeZoneInfo;
}
public DateTime Convert(DateTime localDate)
{
var utcKind = DateTime.SpecifyKind(localDate, DateTimeKind.Utc);
return utcKind;
}
public DateTime ConvertBack(object fromServer)
{
DateTime serverDate = (DateTime)fromServer;
var utcOffset = timeZoneInfo.GetUtcOffset(serverDate);
var uiTime = serverDate- utcOffset;
return uiTime;
}
}
¿Está recibiendo hora alemana o GMT del servidor? – Oded
Pregunta relacionada: http: // stackoverflow.com/preguntas/2532729/horario de verano-tiempo-y-zona horaria-best-prácticas – Oded
El mejor enfoque tienen dos veces en la hora UTC y se convierten en locales, según sea necesario –