Я не понимаю, почему код ниже вычитает час в эпохе метки времени UNIX (в часовом поясе UTC + 1):Timezone питон DateTime объектов
import datetime
import pytz
start_dt = datetime.datetime.fromtimestamp(1362268800 , pytz.utc)
print start_dt
# prints datetime.datetime(2013, 3, 3, 0, 0, tzinfo=<UTC>)
print int(start_dt.strftime("%s"))
# prints: 1362265200 (which is 2013-03-02T23:00Z) <--- I expected 1362268800
print start_dt.strftime("%Y-%m-%dT%H:%M:%SZ")
# prints: 2013-03-03T00:00:00Z
Я с тех пор взломан вокруг моей проблемы, используя calendar.timegm(start_ts.timetuple())
, но я принципиально задаюсь вопросом, что не так с приведенным выше кодом, и как создавать объекты datetime, которые находятся в UTC и где strftime будет печатать временную метку эпохи.
Использование «% s» специально не разрешено в соответствии с документами python. Должно ли быть явно запрещено (т. Е. Создавать исключение?), Если это приводит к запутывающим результатам?
Использование Python 2.7.3
[различные способы преобразования даты, даты и времени в метку времени POSIX] (http://stackoverflow.com/a/8778548/4279) – jfs