2012-09-13 2 views
2

Je cours mongodb sur le serveur d'Ubuntu. Le temps du serveur estLa date de Mongodb est désactivée de 1 heure

root# date 
Thu Sep 13 21:15:58 BST 2012 

Mais quand je lance la commande suivante je reçois un résultat différent

root# mongo 
MongoDB shell version: 2.2.0 
connecting to: test 
> new Date() 
ISODate("2012-09-13T20:15:58.670Z") 

Il y a exactement une heure de différence. Lorsque je mets à jour un champ documents updated_on avec php en utilisant MongoDate(), la valeur du champ est toujours 1 heure d'inactivité.

[EDIT] En fait, je viens de vérifier mon erreur php journal et le temps dans le fichier journal est de 1 heure au large et

[13-Sep-2012 20:11:14 UTC] Log Message (Time should be 21:11:14) 

Répondre

4

Mongo vous dit

2012-09-13T20:15:58.670Z 

Z = Zulu/Zéro décalage/UTC. Vous pouvez également exprimer l'heure dans ce TZ comme 2012-09-13T20: 15: 58.670 + 00: 00, comme défini en the ISO8601 standard en passant.

BST est UTC + 1. Donc, ils sont en même temps mais dans des fuseaux horaires différents.

+0

Merci pour la réponse rapide.Comment puis-je faire Mongo me dire l'heure en BST? Et pourquoi le fichier journal PHP a le même problème? – Optimus

+0

Peut-être que le serveur fonctionne en UTC sans fuseau horaire? Vérifiez sa définition TZ. Et le logfile n'est pas "éteint" non plus, il vit juste au même moment mais dans un fuseau horaire différent :-) – fvu

+0

:) Je pense que c'est plus sur ubuntu que sur mongodb ou php :) Merci pour votre temps. – Optimus

1

Vous pouvez résoudre ce problème en affichant la méthode DateTime avec ToLocalTime.

MVC C# Exemple: @Model.StartDate.ToLocalTime()

Cela est dû à la façon dont MongoDB datetime magasin au format BST. Ainsi, l'heure d'été ou le fuseau horaire du serveur aura un effet sur l'heure réelle retournée à l'application. Ce code simple sera en mesure de formater comme d'habitude avec ToString("dd MMMM yyyy hh:mm tt") ou tout autre format en fonction de vos besoins.

0

Ici, vous devez comprendre un concept de réglage du temps dans les horloges appelé daylight saving time. Dans certains pays du monde, l'horloge avance de 1 heure ou plus pour faire l'expérience de la lumière du jour d'une heure de plus. La différence entre l'IST et la TPS est de 5h30 mais le décalage horaire réel entre New Delhi et Londres est de 6h30. Voir cet article de 4GuysFromRolla pour définir et utiliser l'heure du serveur.