ASP.NET / SQL Server – Définir le timezone

Nous avons un site Web ASP.NET et une database SQL hébergée aux États-Unis. Chaque fois que j'utilise la fonction Now() dans VB.NET et getdate() dans SQL, je reçois l'heure actuelle des Etats-Unis. Le problème est, le client est aux Philippines qui est sur GMT + 8 timezone. Ma question est la suivante: Y a-t-il un moyen de définir le timezone d'une database et d'un site Web spécifiques de sorte que lorsque j'utiliserai les fonctions, j'obtiendrai l'heure actuelle aux Philippines? Comment gérez-vous cela? Autant que possible, nous ne voulons pas faire de soustraction ou d'addition à la date de résultat des fonctions puisque dans le futur, les clients seront d'autres pays. Cela nous donnera des maux de tête en mettant à jour les codes si nous faisons cela.

Merci d'avance!

Étant donné que vos clients peuvent être dans des fuseaux horaires différents, vous devez stocker un timezone pour les clients, qu'ils (ou vous) pouvez définir comme une preference pour leur count. Stocker toutes les dates + fois que UTC, puis convertir en leur timezone lors de l'affichage des résultats dans votre interface.

Cette question a déjà été abordée dans une large mesure dans la question suivante: Comment travailler avec les fuseaux horaires dans ASP.NET?

Suivi: Malheureusement, la date du server SQL est un paramètre au niveau du système, donc ce n'est pas vraiment quelque chose qui peut être manipulé sur une base par session. Il semble que vous aurez besoin de faire quelques changements de code, mais vous pouvez les isoler.

  1. Avez-vous une variable de niveau session qui contient le décalage de timezone du client? Sinon, créez-en un.

  2. Créez une petite class d'utilitaires date / heure.

  3. Dans la class d'utilitaires, fournissez 3 methods pour: (1) get la date / heure actuelle (décalage au timezone du client) (2) passer une date / heure de database pour renvoyer le décalage temporel pour la ZT du client. (3) passer dans un time à partir du client pour soustraire la différence TZ du client.

Vous devrez faire des changements de code, mais vous pouvez probablement utiliser ces fonctions d'utilité pour envelopper les inputs et les sorties partout, en centralisant la logique. Microsoft propose une page sur les erreurs à éviter lors de l'utilisation de la class DateTime et de la manipulation des fuseaux horaires: http://msdn.microsoft.com/fr-fr/library/ms973825.aspx#datetime_topic1a