Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

attribute 'tzinfo' of 'datetime.datetime' objects is not writable

How do I set the timezone of a datetime instance that just came out of the datastore?

When it first comes out it is in UTC. I want to change it to EST.

I'm trying, for example:

class Book( db.Model ):     creationTime = db.DateTimeProperty() 

When a Book is retrieved, I want to set its tzinfo immediately:

book.creationTime.tzinfo = EST 

Where I use this example for my EST object

However I get:

 attribute 'tzinfo' of 'datetime.datetime' objects is not writable 

I've seen a number of answers that recommend pytz and python-dateutil, but I really want an answer to this question.

like image 729
bobobobo Avatar asked Jan 18 '10 21:01

bobobobo


1 Answers

datetime's objects are immutable, so you never change any of their attributes -- you make a new object with some attributes the same, and some different, and assign it to whatever you need to assign it to.

I.e., in your case, instead of

book.creationTime.tzinfo = EST 

you have to code

book.creationTime = book.creationTime.replace(tzinfo=EST) 
like image 156
Alex Martelli Avatar answered Oct 14 '22 09:10

Alex Martelli