2015-03-19 3 views
2

Почему не заменяет модифицировать объект tzinfo, когда он получает действительный часовой пояс ?Python dt.replace (tzinfo =) не изменяет timezome

Я пытаюсь добавить местное время к отметкам времени, которые не указали часовой пояс .

if raw_datetime.tzinfo is None: 
    print(raw_datetime) 
    print(raw_datetime.tzinfo) 
    raw_datetime.replace(tzinfo=dateutil.tz.tzlocal()) 
    print(raw_datetime.tzinfo, dateutil.tz.tzutc()) 

Согласно документации, которую я должен быть в состоянии изменить атрибут tzinfo с действительным DateTime

https://docs.python.org/2/library/datetime.html#datetime.date.replace

Но я явно делаю что-то неправильно, потому что объект tzinfo еще None ,

2000-04-25 12:57:00 
None 
None tzutc() 
+0

Попробуйте 'raw_datetime = raw_datetime.replace (tzinfo = dateutil.tz.tzlocal())'. Я думаю, что времена неизменны. –

+0

Итоговый правильный ответ. Я тупой. – AlexLordThorsen

+1

Несвязанный: 'dt = dt.replace (tzinfo = dateutil.tz.tzlocal()))' fail, если в локальном часовом поясе было другое utc-смещение на 'dt' времени, [используйте' aware_dt = tzlocal.get_localzone(). Localize (naive_dt, is_dst = None) 'вместо этого (http://stackoverflow.com/a/17365806/4279). – jfs

ответ

2

Просто простой надзор, замена не изменяет вызывающий объект, а вместо этого возвращает новый объект со значением, замененным.

datetime.replace:

Возвращение дата с тем же значением, для тех параметров, заданных новых значений по какому ключевому слову указаны аргументы, за исключением. Например, если d == date (2002, 12, 31), то d.replace (day = 26) == date (2002, 12, 26).

+0

datetime.replace (tzinfo =) работает только для часовой пояс UTC и не во многих других случаях. Не используй. – MrE