Искам да си намеря годината, в която се намира часовата зона UTC-11 (последната часова зона за навлизане в новата година), но не съм сигурен как да го направя.
Имам достъп до pytz
библиотеката, както и новият Django timezone
модул и използвам UTC часови зони, които са наясно с часова зона.
Отговори:
5 за отговор № 1Най-лесно би било да пропуснете изцяло обработката на часова зона и просто да я използвате timedelta(hours=11)
да се извади от datetime
и погледнете year
атрибут.
>>> (datetime.datetime.utcnow() - datetime.timedelta(hours=11)).year
2012
2 за отговор № 2
Всъщност часовите зони са малко по-трудни от това ... Може да имате часови зони със същия компенсиращ ефект, но с различни настройки, когато става въпрос за дати за пестене на енергия и такива (или дори по-гадно поведение: https://stackoverflow.com/a/6841479/289011)
Мисля, че за този конкретен случай може да сте по-добре с:
>>> "%s" % (datetime.datetime.utcnow() - datetime.timedelta(hours=11))
"2012-12-26 00:25:30.029864"
Само за годината:
>>> "%s" % (datetime.datetime.utcnow() - datetime.timedelta(hours=11)).year
"2012"
Редактиране: Да, и е добра идея да го използвате datetime.utcnow()
, не datetime.now()
... (моя грешка)