l'attribut 'tzinfo' de 'datetime.datetime' objets n'est pas accessible en écriture
Comment puis-je régler le fuseau horaire d'un objet datetime qui vient de sortir de la banque de données?
Quand il sort il est en UTC. Je veux le changer pour EST.
Je vais essayer, par exemple:
class Book( db.Model ):
creationTime = db.DateTimeProperty()
Quand un Livre est récupéré, je tiens à mettre ses tzinfo immédiatement:
book.creationTime.tzinfo = EST
Où J'utilise cet exemple pour mon HNE objet
Cependant j'obtiens:
attribut "tzinfo' de 'datetime.datetime' objets n'est pas accessible en écriture
J'ai vu un certain nombre de réponses qui vous pytz et python-dateutil, mais je veux vraiment une réponse à cette question.
Vous devez vous connecter pour publier un commentaire.
datetime
's objets sont immuables, de sorte que vous ne modifiez jamais l'un de leurs attributs -- vous faire un nouveau objet de certains attributs sont les mêmes, et d'autre part, et de l'attribuer à tout ce que vous devez l'affecter à.I. e., dans votre cas, au lieu de
vous avez le code
book.creationTime.astimezone(EST)
pourrait être utilisé.Si vous recevez un datetime c'est dans EST, mais ne dispose pas de son tzinfo ensemble sur le terrain, l'utilisation
dt.replace(tzinfo=tz)
pour attribuer un tzinfo sans modification du temps. (Votre base de données doit être faire cela pour vous.)Si vous recevez un datetime en UDT, et vous voulez qu'il en EST, alors vous avez besoin astimezone. http://docs.python.org/library/datetime.html#datetime.datetime.astimezone
Dans la grande majorité des cas, votre base de données, le stockage et le renvoi de données à l'UDT, et vous ne devriez pas besoin d'utiliser de remplacer (sauf peut-être pour attribuer un type défini par l'utilisateur tzinfo).
Ce que vous voulez, c'est juste là, dans le docs.
de sortie: