Il y a une différence entre le local et le serveur de temps
Dans MVC4 application en C#, j'ai utilisé DateTime.Now
lorsque l'objet créé dans mon application. Après le déploiement, il y avait +8 heures de décalage entre l'ordinateur local et l'hébergement. Alors je l'ai changé pour DateTime.UtcNow
, maintenant, la différence est de 4 heures.
Par exemple dans mon ordinateur date est 20 Mar 2013, 14:28:12
, mais aussi de la date magasins de la base de données comme 20 Mar 2013, 10:28:12.
Que dois-je faire de tous les utilisateurs dans tous les pays d'utiliser 1 même date?
Edit: mon fuseau horaire est (UTC+04:00) Bakou, le serveur est le suivant PST
C'est l'un pour @JonSkeet, il aime la date de l'heure des questions 🙂
Hmm. De ne pas être le gars qui lui demande si il est branché, mais: Est-ce la date/l'heure sur le serveur correct? Au moins, ça correspond à celui de votre boîte?
AUSSI: Qui fuseau horaire est le serveur, et qui fuseau horaire êtes-vous?
L'hébergement est Arvixe, je ne pense pas que leur temps n'est pas conforme
Je suis en Azerbaïdjan, le fuseau horaire (UTC+04:00) Bakou et le serveur est Arvixe. Je n'ai pas maintenant que le temps de la zone exactement. Je savais DateTime.Maintenant, prend toujours le serveur de la date/heure
Hmm. De ne pas être le gars qui lui demande si il est branché, mais: Est-ce la date/l'heure sur le serveur correct? Au moins, ça correspond à celui de votre boîte?
AUSSI: Qui fuseau horaire est le serveur, et qui fuseau horaire êtes-vous?
L'hébergement est Arvixe, je ne pense pas que leur temps n'est pas conforme
Je suis en Azerbaïdjan, le fuseau horaire (UTC+04:00) Bakou et le serveur est Arvixe. Je n'ai pas maintenant que le temps de la zone exactement. Je savais DateTime.Maintenant, prend toujours le serveur de la date/heure
OriginalL'auteur Jhoon Bey | 2013-03-20
Vous devez vous connecter pour publier un commentaire.
Disons par exemple que l'utilisateur est à New York (GMT - 5) et que votre serveur est en Inde (GMT + 5:30).
Lorsque l'utilisateur voit un "local" de temps de 10:00am (heure de l'est), votre serveur serait de voir un "local" de temps de 7:30 (IST). Cependant, en utilisant l'UTC dans les deux endroits....l'utilisateur devrait voir une heure UTC de 3pm et le serveur voir une heure UTC de 3pm.
À l'aide de l'UTC, dans tous les lieux, mais en gardant un referece des utilisateurs de fuseau horaire vous permet de toujours travailler dans l'UTC, mais encore de convertir le temps en les utilisateurs "local" du temps lorsque vous souhaitez montrer.
Vous ne pouvez pas compter sur les où un serveur est hébergé especically si c'est un serveur virtuel. Et vous ne pouvez pas assumer ce que l'heure de la zone de l'hébergeur ensemble de leurs serveurs. Préférable de toujours code defensivly en utilisant
DateTime.UtcNow
lors du stockage de la date de fois dans la base de données.Pour convertir cette UTC temps de retour à l'horaire d'un utilisateur, vous devrez effectuer les opérations suivantes:
Pour info, vous pouvez trouver une liste des fuseaux horaires de:
Ce imprimer:
Comme vous pouvez le voir, vous aurez besoin de connaître le temps aux utilisateurs de la zone. Il y a 2 façons de connaître le temps aux utilisateurs de:
Je dirais que la première option, comme la seconde, on peut rendre les choses plus difficile pour les gens. Par exemple, si ils sont basés au royaume-UNI et l'avion pour les etats de la semaine. Tout va changer zones et ils peuvent ne pas réaliser!
Êtes-vous essayer de convertir le temps de retour après le retour de la base de données? Si donc, l'objet DateTime ne sait pas ce que l'heure locale de l'utilisateur. Il sera à l'aide de l'heure locale du serveur. Je vais mettre à jour ma réponse à ajouter des détails supplémentaires sur ce que vous devez faire pour obtenir l'original de remonter le temps...
merci pour elle, je comprends que je peux le faire uniquement avec du javascript. Pour les 10 jours à côté serveur j'type de certains codes comme ToLocalTime (), etc. pour afficher la date et l'heure avec l'utilisateur, heure locale. Donc, Il n'est pas droit comme Vous le dites. merci pour elle. Puis-je gérer avec la globalisation de la culture et de uiCulture) ?
OriginalL'auteur Penfold
quand je travaillais sur un projet utilisés par les utilisateurs internationaux, nous serions toujours utiliser
DateTime.UtcNow
si un projet local - c'est à dire uniquement conçu pour des utilisations dans votre fuseau horaire, puis
DateTime.Now
sera suffisant.OriginalL'auteur JGilmartin
Votre heure locale est l'heure de votre système. Vérifiez le fuseau horaire de votre système d'exploitation.
Le serveur de temps vous faites référence est selon le fuseau horaire dans vos fichiers de configuration du serveur.
Assurez-vous que vous avez le système d'exploitation fuseau horaire et votre serveur de fuseau horaire similaire.
Vous pouvez détecter les utilisateurs de fuseau horaire et affichage de l'heure dans leur fuseau horaire local. Supposons que je suis en Inde, mon heure locale est de 5.00 PM. Le serveur est à Ottawa, le Canada et l'heure du serveur est de 7:30 AM. Le temps stockés sur le serveur va être l'heure du serveur. Lors de l'affichage de l'utilisateur, il doit être converti en heure locale.
Ok, je comprends. j'ai changé tous les DateTime.UtcNow et le convertir avant de les afficher. merci
OriginalL'auteur Harpreet