![]() |
converting datetime object in UTC to local time
Hi all,
So a lot of digging on doing this and still not a fabulous solution: import time # this takes the last_modified_date naive datetime, converts it to a # UTC timetuple, converts that to a timestamp (seconds since the # epoch), subtracts the timezone offset (in seconds), and then converts # that back into a timetuple... Must be an easier way... mytime = time.localtime(time.mktime(last_modified_date.utct imetuple()) - time.timezone) lm_date_str = time.strftime("%m/%d/%Y %I:%M %p %Z", mytime) last_modified_date is a naive datetime.datetime object A previous version gave me something like: mytime = datetime.datetime.fromtimestamp(time.mktime(last_m odified_date.utctimetuple()) - time.timezone) lm_date_str = mytime.strftime("%m/%d/%Y %I:%M %p %Z") But this gave me no timezone since the datetime object is still naive. And I'm going from a datetime to a timetuple to a timestamp back to a datetime... All this seems like a lot of monkeying around to do something that should be simple -- is there a simple way to do this without requiring some other module? thx Matt |
Re: converting datetime object in UTC to local time
How about subclass datetime.tzinfo? That way you can use asttimezone
to transfer utc to localtime. It requires an aware object though not naive. A bit more coding, but a lot less converting... Jim On Jul 3, 5:16 pm, Matt <m...@vazor.com> wrote: > Hi all, > > So a lot of digging on doing this and still not a fabulous solution: > > import time > > # this takes the last_modified_date naivedatetime, converts it to a > # UTC timetuple, converts that to a timestamp (seconds since the > # epoch), subtracts the timezone offset (in seconds), and then > converts > # that back into a timetuple... Must be an easier way... > mytime = time.localtime(time.mktime(last_modified_date.utct imetuple()) > - time.timezone) > > lm_date_str = time.strftime("%m/%d/%Y %I:%M %p %Z", mytime) > > last_modified_date is a naivedatetime.datetimeobject > > A previous version gave me something like: > > mytime =datetime.datetime.fromtimestamp(time.mktime(last_ modified_date.utctimetuple()) > - time.timezone) > > lm_date_str = mytime.strftime("%m/%d/%Y %I:%M %p %Z") > > But this gave me no timezone since thedatetimeobject is still > naive. And I'm going from adatetimeto a timetuple to a timestamp > back to adatetime... > > All this seems like a lot of monkeying around to do something that > should be simple -- is there a simple way to do this without requiring > some other module? > > thx > > Matt |
| All times are GMT. The time now is 12:51 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.