Mon serveur attend des objets datetime au format GMT et mon application d'interface utilisateur crée et manipule toujours tous les objets datetime en fonction de la culture locale. Je ne peux pas modifier la culture car il existe d'autres fonctionnalités nécessitant les objets datetime selon le format local. J'ai écrit un convertisseur pour cela, je ne sais pas s'il y a une API qui me permet de le faire. Aussi un peu confus à propos de la méthode GetUtcOffset sur timezoneinfo, est-ce que ça fait la différence entre l'heure locale et l'heure gmt? la documentation disponible sur msdn, a été un peu crptic pour moi.S'il vous plaît pouvez-vous aider? Aussi comment puis-je tester l'unité, en changeant la culture et en vérifiant la sortie?TimeZoneInfo | GetUtcOffset: Une meilleure solution?
La classe below convertit les objets de date et heure pour qu'ils contiennent un équivalent de l'heure GMT et les convertit également lors de la réception du serveur.
Remarque: Mon serveur et l'interface utilisateur s'exécutent à l'heure CET, mais ces objets datetime sont spécifiques au Royaume-Uni et par conséquent le serveur en a besoin en GMT.
public class GmtConverter : IDateConverter
{
private readonly TimeZoneInfo timeZoneInfo;
public GmtConverter()
: this(TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
{
}
public GmtConverter(TimeZoneInfo timeZoneInfo)
{
this.timeZoneInfo = timeZoneInfo;
}
public DateTime Convert(DateTime localDate)
{
var utcOffset = timeZoneInfo.GetUtcOffset(localDate);
var unSpecified = localDate + utcOffset;
return DateTime.SpecifyKind(unSpecified, DateTimeKind.Unspecified);
}
public DateTime ConvertBack(object local)
{
var localDate = (DateTime) local;
var utcOffset = timeZoneInfo.GetUtcOffset(localDate);
var unSpecified = localDate - utcOffset;
return DateTime.SpecifyKind(unSpecified, DateTimeKind.Unspecified);
}
}
question connexe: http://stackoverflow.com/questions/2532729/daylight-saving-time -and-timezone-best-practices – Oded