Réglage de la Zone horaire avec le Compact Framework sur Windows Mobile 6
D'abord, le contexte: j'ai un .Net application qui s'exécute en mode plein écran sur les périphériques Windows Mobile 6 (IPAQ 210s). Notre logiciel pistes le temps de l'utilisateur de la zone de manière indépendante du système d'exploitation, nous calculons l'heure affichée en fonction du temps de la zone de réglage de l'heure UTC. Comme beaucoup le savent, véritable mode kiosque n'est pas facile à réaliser sur Windows Mobile 6, et la dernière pièce du puzzle de cette application est la suppression de l'heure d'été, les notifications de l'OS.
Mon préféré la solution à ce problème serait réglé l'appareil fuseau horaire de GMT Casablanca, puisqu'il n'observe pas l'heure d'été. J'ai découvert, cependant, que malgré tous mes efforts (y compris à l'aide de la OpenNETCF bibliothèque) je ne peux pas obtenir le fuseau horaire de manière fiable bâton pendant le processus de configuration des périphériques. La date/heure de l'applet dans l'OS, il semble comme le fuseau horaire est GMT, mais le temps est un large de ce qu'il devrait être pour que le fuseau horaire.
Quelqu'un peut-il offrir des conseils sur la manière d'obtenir le changement de fuseau horaire pour coller correctement? Ou, mieux encore, personne ne sait comment faire pour désactiver l'heure d'été notification sur WinMob 6?
OriginalL'auteur bjanaszek | 2009-06-12
Vous devez vous connecter pour publier un commentaire.
Pour quelque raison que ce soit, le FC effectivement caches fuseau horaire info au démarrage (je pense que le document complet fait trop). Ainsi, lorsque vous apportez des modifications à l'horaire, le CF est pas au courant de ces changements. Si vous utilisez le GetSystem/LocalTime Api, vous aurez le droit de temps, mais DateTime.Aujourd'hui ne sera pas tenir compte de ces changements.
J'ai signalé ce retour en 2004.
Sur le bureau, vous avez la TimezoneInfo.ClearCachedInfo méthode, mais il n'existe pas dans les FC.
OriginalL'auteur ctacke
Vous pouvez le mettre dans le registre. Il suffit de régler la HKLM\Time\TimeZoneInformation valeur.
Il existe aussi une fonction vous pouvez pinvoke: SetTimeZoneInformation.
La clé de registre fonctionne également pour les appareils Windows Mobile. Je l'ai utilisé dans le passé. Mais pinvoke est probablement la solution recommandée.
OriginalL'auteur Tom van Enckevort
J'ai également rencontré l'hors d'une erreur lors du changement de fuseaux horaires, mais dans eVC pas CF encore. En fin de compte, j'ai décidé qu'il était provoqué par la modification du fuseau horaire de l'appareil à partir d'un fuseau horaire qui a été à l'heure d'été est déjà à un fuseau horaire qui n'a pas été en heure d'été. Il est apparu à travailler correctement pour le mois de l'année que nous avons été à l'heure d'hiver, mais a échoué quand nous étions à l'heure d'été. Très ennuyeux.
En fin de compte, j'ai fini de réglage du fuseau horaire et de temps deux fois. Il est (généralement) corriger la deuxième fois.
OriginalL'auteur Jack Bolding
J'ai vécu la même off-par-une-heure de l'heure d'été d'erreur dans Windows Mobile 5. Le problème semble être l'OS plutôt que .NET-liés, puisque j'ai été en utilisant le
SetSystemTime
les appels de l'API sur l'appareil, en passant du serveurDateTime.UtcNow
valeur (qui est toujours juste et jamais hors d'une heure). Je n'ai jamais été en mesure de retracer le problème de plus, parce que nous avons pris la décision de garder tous les appareils mis sur le même fuseau horaire que le serveur. L'erreur s'est produite lors de la configuration de l'heure système sur un ensemble de périphériques à un fuseau horaire différent de celui du serveur.Je n'ai jamais vu ce problème signalé n'importe où, malgré de nombreuses recherche, ce qui signifie que l'une des conditions suivantes est remplie:
OriginalL'auteur MusiGenesis
J'ai utilisé avec succès OpenNETCF.WindowsCE.DateTimeHelper classe.
Ma plate-forme:
Windows Mobile 6.1
CF 3.5
OriginalL'auteur Adi