Tags: converting, converts, datetime, digging, fabulous, last_modified_date, local, naive, object, programming, python, solutionimport, time, utc
converting datetime object in UTC to local time
On Programmer » Python
2,947 words with 1 Comments; publish: Fri, 04 Jan 2008 17:32:00 GMT; (20062.50, « »)
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
http://python.itags.org/q_python_16898.html
All Comments
Leave a comment...
- 1 Comments

- 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....python.itags.org.vazor.comwrote:
Quote:=== Original Words ===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
#1; Fri, 04 Jan 2008 17:33:00 GMT