Ho riscontrato un problema durante la conversione delle date tra il mio server e il client in cui entrambi sono in esecuzione in Germania. Le impostazioni regionali sui computer client potrebbero essere impostate sia nel Regno Unito che in Germania. Ricevo una data dal server che è in formato CET, e ho bisogno di rappresentare questa volta sull'interfaccia utente come ora del Regno Unito. Ad esempio, un tempo ricevuto dal server come dire, 01/07/2010 01:00:00 dovrebbe essere rappresentato sull'interfaccia utente come 01/07/2010 00:00:00. Ho scritto un convertitore per questo scopo, tuttavia durante l'esecuzione 'sto ottenendo una differenza di tempo di 2 ore. In basso è il codice, per favore puoi aiutare?Come rappresentare l'ora corrente del Regno Unito?
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;
}
}
Stai ricevendo ora tedesca o GMT dal server? – Oded
Domanda correlata: http: // stackoverflow.it/questions/2532729/daylight-saving-time-and-timezone-best-practice – Oded
L'approccio migliore ha entrambe le volte in UTC e viene convertito in locale in base alle necessità –