2009-01-09 10 views
1

Mon application client Reçoit des données via WebService à partir d'un serveur distant. L'application est essentiellement écrite dans le formulaire Windows 1.1 Framework. Tout ce que je veux faire est de définir mon TimeZone d'application client égale à Server TimeZone afin que toutes les discordances liées à Date Time puissent être évitées. Pour cela, je voudrais savoir comment récupérer le fuseau horaire du serveur et comment définir le fuseau horaire du client égal au serveur.Comment définir un fuseau horaire client identique à celui de la fenêtre Fuseau horaire du serveur .NET C#

Répondre

1

Si vous utilisez l'UTC des deux côtés, vous n'aurez pas à vous soucier de la différence entre les décalages. Pour l'affichage dans votre application, vous pouvez convertir les dates UTC à l'heure locale.

0

David,

Je pense que la question initiale est d'obtenir les informations TimeZone du serveur. J'ai vu parfois que vous avez besoin d'obtenir des informations TimeZOne pour garder votre serveur et votre client dans la même zone. Par exemple, si vous avez un périphérique qui se synchronise avec le serveur si vous déplacez deviec vers un autre emplacement où il synchronise le serveur local, vous pouvez définir les informations de fuseau horaire de votre périphérique sur le fuseau horaire local du serveur.

Dans cette situation, il est très important de définir le client TimeZone sur le fuseau horaire du serveur, sinon votre client affiche l'heure du fuseau horaire différent/original.

Je pense que vous pouvez envisager des options comme "Options DHCP", "Serveur NTP" mais je ne suis pas au courant de la solution exacte à ce problème.

1

Je ne sais pas exactement ce que votre problème est que nous avons eu un problème similaire dans notre application. Lors de l'envoi de datetime du serveur au client dans des fuseaux horaires différents, lorsque le client reçoit le datetime, il peut le convertir en heure locale. Je n'ai pas trouvé de solution pour cela dans .net 1.1. Mais à partir de .Net 2.0 dateTime a une propriété appelée Kind et si vous définissez sa valeur à non spécifié le client ne convertit pas le temps qu'il reçoit du serveur à l'heure locale.

0

si vous utilisez .NET Framework 3.5, vous pouvez utiliser la classe TimeZoneInfo pour récupérer des informations de fuseau horaire ...

// Get time in local time zone 
DateTime thisTime = DateTime.Now; 
Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ? 
        TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime); 
Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local)); 
// Get Tokyo Standard Time zone 
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time"); 
DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);  
Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(tstTime) ? 
        tst.DaylightName : tst.StandardName, tstTime); 
Console.WriteLine(" UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst)); 

TimeZoneInfo class

Questions connexes