0

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 時間) です。なんで?

4

2 に答える 2

2

以下の例では、タイムゾーンを 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は現地時間に基づく時間タプルを使用するため、UTCdatetimeオブジェクトを最初に現地時間に調整する必要があります。

于 2011-10-16T14:40:39.523 に答える
0

2 番目のコードは現地時間を使用し、最初のコードは UTC を明示的に使用します。

于 2011-10-16T12:50:22.617 に答える