2011-05-10 2 views
1

Je crée un site web asp.net 2.0. Il affiche tous les candidats enregistrés avec date d'enregistrement. Je stocke toute la date dans la base de données comme UniversalDate, maintenant voulez afficher la date basée sur la culture du client et le fuseau horaire.Comment afficher les abréviations du fuseau horaire et du fuseau horaire du client?

Je peux obtenir le décalage de fuseau horaire en utilisant javascript, mais comment montrer l'abréviation de fuseau horaire correctement, parce qu'il y a un décalage est même.

Alors s'il vous plaît laissez-moi savoir comment puis-je faire cela?

Répondre

0

Je ne sais pas si je comprends bien:

Votre problème est que vous obtenez le fuseau horaire décalé par rapport navigateur web avec la fonction JavaScript getTimezoneOffset(), envoyer que vers le serveur et sur l'affichage, vous êtes face à la problème: quel fuseau horaire utiliser?

Fondamentalement, il n'est pas nécessaire d'ajouter un désignateur de fuseau horaire s'il s'agit d'un indicateur de fuseau horaire par défaut. Par défaut, je veux dire local. Dans ce cas, vous devez vous préoccuper uniquement du décalage correct. Bien sûr, cela peut poser un problème pour les données historiques: s'il existe plusieurs fuseaux horaires qui partagent (actuellement) le même décalage, mais qui compensent les modifications à des dates différentes, vous risquez d'imprimer une date et une heure incorrectes pour quelques enregistrements.

Comment l'éviter? Le seul moyen est d'ajouter des informations de fuseau horaire au profil de l'utilisateur et de donner à l'utilisateur la possibilité de choisir son fuseau horaire dans la liste. Vous pouvez facilement obtenir la liste de TimeZoneInfo (ce qui est la classe que vous devez utiliser pour effectuer des calculs, certaines entrées seront dupliqués intentionnellement/pour des raisons historiques):

// gives you the list of time zones 
var timeZones = TimeZoneInfo.GetSystemTimeZones(); 
foreach(var timeZone in timeZones) 
{ 
    // gives you the UTC offset and list of cities this entry regards to 
    // this is the best what you can display to user 
    string name = timeZone.DisplayName; 
    // ... 
} 

Si vous souhaitez utiliser cette méthode, vous voudrez peut-être ajouter des informations disant "Toutes les dates et heures en fonction du fuseau horaire .. Changez votre fuseau horaire ici". C'est tout.
Le seul problème que j'ai, la propriété DisplayName est supposé me donner un nom localisé, mais il me montre toujours le nom dans la culture actuelle du serveur:/

Questions connexes