2009-10-06 8 views
0

Les utilisateurs ont leurs fuseaux horaires stockés dans les profils ASP.NET sous forme de chaînes. Je veux utiliser ces fuseaux horaires UTC pour convertir pour un utilisateur donné:ASP.NET: Problèmes d'utilisation du fuseau horaire dans le profil pour convertir à partir de l'UTC

Dim timezoneFromProfile = HttpContext.Profile("TZ").ToString 
Dim timezone = TimeZoneInfo.FromSerializedString(timeZoneFromProfile) ' FAIL 
Dim convertedTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timezone) 

Le problème est que TimeZoneInfo.FromSerializedString() attend son entrée à pas être juste une chaîne telle que:

(UTC-08: 00) heure normale du Pacifique (Etats-Unis & Canada)

Je sérialisation TimeZoneInfo dans le profil ASP.NET peut-être en utilisant XML de l'utilisateur, mais je suis amené à croire que l'utilisation de tout autre chose que des types simples tels que les chaînes et les entiers entraîne des performances médiocres en ce qui concerne les profils.

Quelle est la meilleure solution?

Répondre

1

Vous pouvez charger un fuseau horaire de son "Id":

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); 

GetSystemTimeZones vous donnera la liste des Ids. Note: ce sont des méthodes du framework 3.5.

+0

Je viens de comprendre et de me reconnecter pour répondre à ma propre question, mais vous m'avez battu! Comme vous le faites remarquer, l'astuce consiste à le stocker dans le Profil en tant qu'ID et non DisplayName. Merci. – royco

Questions connexes