2010-09-03 15 views
0

J'ai un site Web qui affiche la date actuelle en utilisant le code Datetime.Now. D'après ce que je comprends, Datetime.Now est censé afficher l'heure actuelle telle qu'elle apparaîtrait dans les paramètres régionaux actuels de l'utilisateur.Datetime.Now déterminer ma position incorrecte

Au moment où je teste localhost, le site Web détermine correctement ma position (en-nz) et affiche la bonne date. Cependant, quand je cours le site en direct, je reçois une date différente tous ensemble.

Alors, comment un système détermine-t-il les paramètres régionaux d'un spectateur et pourquoi existe-t-il une différence entre la façon dont mon site affiche Datetime.Now localement et en direct?

+0

Par date différente, voulez-vous dire qu'il s'agit d'une date différente réelle ou est-il simplement formaté incorrectement? –

Répondre

5

Non, DateTime.Now récupérera l'heure actuelle dans la zone heure locale de la machine, il fonctionne sur. En d'autres termes, le serveur web dans votre cas, en supposant que vous écrivez une application web (vous ne l'avez pas précisé).

Si vous souhaitez l'afficher dans le fuseau horaire local d'un navigateur, mieux vaut envoyer DateTime.UtcNow et d'écrire du JavaScript pour le convertir à l'heure locale ... ou simplement laisser JavaScript travailler sur le courant l'heure sur le système de l'utilisateur. Pour autant que je sache, il n'y a aucun moyen d'obtenir précisément le fuseau horaire de JavaScript. Vous pouvez obtenir le décalage actuel à partir de l'UTC, mais ce n'est pas la même chose que le fuseau horaire lui-même. (Les offsets changent en raison de choses comme DST, sachant que le décalage actuel ne vous dit pas quand DST va entrer.)

7

DateTime.Now a l'heure du serveur, mais pas l'heure du client. Si vous voulez détecter l'heure du client, vous devez utiliser Javascript, soit en détectant l'heure avec elle ou en la calculant en utilisant les fuseaux horaires.

Dans votre localhost fonctionne très bien, car le serveur et le client sont dans le même PC/Time Zone

it helps!

+1

OMG !!! J'ai un meilleur score que Jon Skeet !!! c'est ce que le paradis ressemble ... –

0

Peut-être que les machines ont différents réglages de l'heure? Si le développement et les serveurs live se trouvent dans des endroits différents, c'est tout à fait possible. Comme le disent les autres réponses, DateTime.Now reçoit l'heure du serveur et non celle du client.