converting datetime object in UTC to local time

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Matt

    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_d ate 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(las t_modified_date .utctimetuple() )
    - time.timezone)

    lm_date_str = time.strftime(" %m/%d/%Y %I:%M %p %Z", mytime)

    last_modified_d ate is a naive datetime.dateti me object


    A previous version gave me something like:

    mytime =
    datetime.dateti me.fromtimestam p(time.mktime(l ast_modified_da te.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

  • i3dmaster

    #2
    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_d ate 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(las t_modified_date .utctimetuple() )
    - time.timezone)
    >
    lm_date_str = time.strftime(" %m/%d/%Y %I:%M %p %Z", mytime)
    >
    last_modified_d ate is a naivedatetime.d atetimeobject
    >
    A previous version gave me something like:
    >
    mytime =datetime.datet ime.fromtimesta mp(time.mktime( last_modified_d ate.utctimetupl e())
    - time.timezone)
    >
    lm_date_str = mytime.strftime ("%m/%d/%Y %I:%M %p %Z")
    >
    But this gave me no timezone since thedatetimeobje ct 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

    Comment

    Working...