Je travaille sur un blog et je veux montrer mes messages dans le fuseau horaire de l'Est. Je pensais que stocker tout UTC serait la bonne façon. Cela crée cependant quelques défis:Stocker datetime dans la base de données?
Je dois convertir toutes les heures de l'UTC à l'Est. Ce n'est pas un gros problème mais ajoute beaucoup de code.
Et le "biggie" est que j'utilise un temps de courte date pour référencer les messages en passant une requête, ala blogger. Le problème est qu'il n'y a aucun moyen de convertir l'heure de date courte à la date UTC correcte parce que je manque l'information de temps affichée.
Hmm, avez-vous des problèmes pour stocker toutes les dates dans l'heure de l'Est? Cela faciliterait certainement le reste de l'application, mais si j'avais besoin de changer de fuseau horaire, tout serait mal stocké.
Mise à jour
@ Jon, beaucoup de valeur votre expertise, mais je l'ai décidé stocker l'heure UTC dans la base de données est erroné. Vous pourriez être en mesure de me convaincre du contraire si! Alors, laissez-moi vous en donner plein la peau. J'ai converti tous les temps en UTC, ce qui nécessitait d'ajouter beaucoup plus de "syntaxe" dans les parties déclaratives du code. Ce que je suis en train de coder est un blog, donc j'ai 2 routes, une route de liste et une route de détails. La route des détails prend une date courte et le nom du poste qui suppose que le combiné est unique. C'est pourquoi ça tombe en panne. Je passe le chemin court dans la requête. Selon l'heure de la journée, nous pouvons envelopper 29 et 30. Donc, la date courte doit être correcte car je n'ai pas assez d'informations dans la requête pour déterminer comment convertir l'heure de l'Est en UTC. Je stockais une "date courte" DatePosted avec tous les temps @ 12 heures à des fins SQL et une date longue FirstModified pour l'heure. Donc, j'ai dit, okay pas de problème, je vais juste stocker la date courte dans l'Est et ensuite convertir longue date à l'Est. Non, car je ne peux pas faire fonctionner ces requêtes. Donc, j'ai décidé que je m'y suis pris à tort et à travers. La date doit toujours être stockée dans l'heure de l'Est (le temps que je veux utiliser). Et puis, si l'utilisateur veut changer de fuseau horaire (pas une exigence), nous passons en revue toutes les entrées et les modifions. Peut-être, je pense à ce problème, mais dans mon cas, il n'y aura jamais que le fuseau horaire de l'Est utilisé, donc c'est une perte de temps de toute façon.
Réjouissez-vous de toute entrée sur ce!
Les principaux problèmes:
- Je passe à une date courte dans la requête. Si cette courte date est en UTC alors la date dans la requête pourrait être désactivée de 1. Si je passe la date courte à l'est alors j'ai besoin d'une syntaxe linq-to-sql qui peut être convertie en SQL qui me permettra de comparer la date fois de différents fuseaux horaires.
Merci encore pour toute aide!
@Jon Je pensais au cas où j'utilise une date courte. 23/05/2010. Cela pourrait être 23 ou 24 et ne peut pas être converti - selon le temps. Par exemple, la date peut être fausse. Je peux gérer cela à la source peut-être. –
@Curtis White: Soit il y a une ambiguïté - dans ce cas, vous devez le gérer de toute façon - ou il n'y en a pas, et vous pouvez compenser le fuseau horaire dans le code. –
@Jon Merci pour toute aide. J'ai mis à jour la question avec plus de détails.Le problème avec la conversion de toutes les date/heure partout est finalement que je finis par avoir besoin de support SQL pour ces problèmes, ce qui n'est pas évident comment réaliser certains d'entre eux dans SQL 2005. Donc ça devient un gâchis. Je décide qu'il est préférable de stocker cela dans les métadonnées, puis de convertir toutes les fois si l'on veut changer, ce qui évite aussi la plupart des conversions –