Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pytz and astimezone() cannot be applied to a naive datetime

I have a date and I need to make it time zone aware.

local_tz = timezone('Asia/Tokyo') start_date = '2012-09-27' start_date = datetime.strptime(start_date, "%Y-%m-%d")    start_date = start_date.astimezone(local_tz)   now_utc = datetime.now(timezone('UTC')) local_now = now_utc.astimezone(local_tz) 

I need to find if this is true:

print start_date>local_now 

But I get this error.

   start_date = start_date.astimezone(local_tz)    ValueError: astimezone() cannot be applied to a naive datetime 

I convert utc to tokyo with no issue. I need to make start_date timezone aware ad well in tokyo.

Thanks

like image 872
Tampa Avatar asked Sep 27 '12 16:09

Tampa


1 Answers

For pytz timezones, use their .localize() method to turn a naive datetime object into one with a timezone:

start_date = local_tz.localize(start_date) 

For timezones without a DST transition, the .replace() method to attach a timezone to a naive datetime object should normally also work:

start_date = start_date.replace(tzinfo=local_tz) 

See the localized times and date arithmetic of the pytz documentation for more details.

like image 186
Martijn Pieters Avatar answered Oct 15 '22 00:10

Martijn Pieters