Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Dates and Times in Python (2014) Where on Earth do Timezones Make Sense? Timezone Strings

Benjamin Bradshaw
Benjamin Bradshaw
3,208 Points

What am I Missing

This is my recent attempt and I can't figure out why this doesn't make sense to me.

timezone.py
import datetime

import pytz

starter = pytz.utc.localize(datetime.datetime(2015, 10, 21, 23, 29))

def to_timezone(tzname):
    tz = pytz.timezone(tzname)
    new_dt = tz.localize(starter)
    return new_dt

1 Answer

Chris Howell
seal-mask
.a{fill-rule:evenodd;}techdegree seal-36
Chris Howell
Python Web Development Techdegree Graduate 49,702 Points

Hey Benjamin Bradshaw

I wrote a bunch of comments to give you hints of whats happening with your error.

Let me know if that helps at all. :)

import datetime

import pytz

starter = pytz.utc.localize(datetime.datetime(2015, 10, 21, 23, 29))
# datetime.datetime(2015, 10, 21, 23, 29, tzinfo=<UTC>)
# NOTE: the 'tzinfo'

def to_timezone(tzname):
    # for this example...
    # lets pretend 'tzname' contains 'US/Pacific'

    tz = pytz.timezone(tzname)
    # tz = 'US/Pacific'

    new_dt = tz.localize(starter)
    # ValueError: Not naive datetime (tzinfo is already set)
    # 'starter' already had its timezone tzinfo set with localize above

    # but since 'starter' is a datetime object it has other methods
    # that may let us convert to another timezone since its already
    # been localized to UTC.
    return new_dt

Kenneth uses this method at some point in his video. :)