Метки ускорения / Python Unix не совпадают - PullRequest
0 голосов
/ 16 октября 2011

Python 2.6:

import pytz
import time
import datetime
time.mktime(datetime.datetime(1990, 1, 1, tzinfo=pytz.utc).timetuple())

Результат:

631148400.0

Повышение 1.46:

auto a = boost::posix_time::ptime(boost::gregorian::date(1990, 1, 1));
auto b = boost::posix_time::ptime(boost::gregorian::date(1970, 1, 1)); // unix epoch
boost::posix_time::time_duration x = a - b;
std::cerr << x.total_seconds() << std::endl;

Результат:

631152000

Разница3600 (1 час).Почему?

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Для приведенного ниже примера я установил часовой пояс GMT-01:

>>> import datetime, time, pytz

>>> tz = pytz.FixedOffset(-60)
>>> dt = datetime.datetime(1990, 1, 1, tzinfo=pytz.utc)

>>> tm = dt.astimezone(tz).timetuple(); tm
time.struct_time(tm_year=1989, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=0, tm_s
ec=0, tm_wday=6, tm_yday=365, tm_isdst=0)

>>> time.mktime(tm)
631152000.0

mktime принимает кортеж времени на основе местного времени, поэтому объект UTC datetime должен сначала быть настроен на местное время.

0 голосов
/ 16 октября 2011

Второй код использует местное время, первый явно использует UTC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...