7
votes

Utiliser UTC avec une suite?

J'aimerais ne pas stocker des horaires dans mon fuseau horaire local, mais la suite me rend vraiment difficile pour moi. Je peux les mettre à l'UTC avant de les mettre là-bas (un peu de douleur), mais lorsque je les ramène, il suppose qu'elles sont des dates locales, puis ils sont toutes 8 heures à l'avenir. Est-ce quelque chose qui n'a pas encore été mis en œuvre? Et si oui, y a-t-il des solutions de contournement? Merci!


0 commentaires

3 Réponses :


5
votes

Il suffit d'avoir un problème très similaire moi-même.

Cette information a été prise à partir du SEQUEL RDOC

la suite peut utiliser la durée ou la date d'heure par temps retourné de la base de données. Il est par défaut à l'heure. Pour le changer à DateTime, utilisation: xxx

Assurez-vous également que vous ne stockez pas les informations de fuseau horaire dans votre base de données. J'utilise Postgres et le type de colonne est horodatage sans fuseau horaire .

Cela devrait entraîner la date / heure affichée dans l'UTC. Il a fonctionné pour moi lorsque vous passez à une date / heure de 2009-07-13T03: 22: 53Z Le résultat est affiché comme 2009-07-13T03: 22: 53 + 00: 00


0 commentaires

4
votes

Le moyen le plus simple d'essayer de les mettre en tant que UTC consiste à remplacer littéralement_dateTime et / ou littéral_time pour la classe de données que vous utilisez pour renvoyer une chaîne littérale de l'heure UTC.

Les faire sortir dans UTC dépend de l'adaptateur que vous utilisez. Par exemple, l'adaptateur Postgres appelle suite.string_to_DateTime, qui appelle simplement l'analyse sur la suite.DateTime_Class (heure par défaut). Si la colonne DateTime inclut les informations de fuseau horaire, les choses doivent fonctionner correctement. S'il n'inclut pas les informations sur le fuseau horaire, TIME.PARSE va supposer qu'il est donné une heure locale. Dans ce cas, vous voudrez peut-être remplacer SEQUEL.String_To_DateTime pour vous assurer qu'il retourne toujours l'heure avec le décalage UTC (peut-être en appelant Time.Parse (s) .gmtime).


0 commentaires

23
votes

Ceci est un peu dépassé à ce stade, mais je pense que la meilleure solution ici a changé depuis la publication de la réponse originale. Si vous définissez

Sequel.default_timezone = :utc


0 commentaires