Question

I have a datetime.datetime object (datetime.datetime(2014, 4, 11, 18, 0)) and I would like to assign it a timezone using pytz. I know you can use pytz with a datetime.datetime.now() object (datetime.datetime.now(pytz.timezone('America/Los_Angeles'))) but how would I do it with a custom object?

Was it helpful?

Solution

Use the localize method:

import pytz
import datetime
la = pytz.timezone('America/Los_Angeles')
now = la.localize(datetime.datetime.now())
print(repr(now))

yields

datetime.datetime(2014, 4, 11, 21, 36, 2, 981916, tzinfo=<DstTzInfo 'America/Los_Angeles' PDT-1 day, 17:00:00 DST>)

localize is used to interpret timezone-unaware datetimes with respect to a timezone. The result is a timezone-aware datetime. Note that some timezone-unaware datetimes, such as datetime(2002, 10, 27, 1, 30, 00), are ambiguous in certain timezones. Use the is_dst parameter to avoid the ambiguity.

astimezone is used to convert aware datetimes to other timezones.

OTHER TIPS

Alternatively, you can assign timezone to os.environ['TZ'] directly.

import os
import datetime

print datetime.datetime.now()

os.environ['TZ'] = 'America/Los_Angeles'

print datetime.datetime.now()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top