2

ほとんどの DST の奇妙なことは真夜中頃に発生するので、単純に「午前 8 時」から現在の時刻を差し引くのはかなり安全だと思いますが、それは私が非常に満足している解決策ではありません。

(以下では、マシンの現地時間が America/New_York であると仮定しています。これは、私の目的にとって安全な仮定です)

私が探しているものを説明するために、Pythonでそれを行う方法を次に示します

from datetime import datetime,date,time
print ( datetime.now() - datetime.combine( date.today(), time(8,0,0) ) ).total_seconds()

または、もう少し気をつけていれば:

from datetime import datetime,date,time
import pytz
tz = pytz.timezone('America/New_York')  #local time is always New York
now = pytz.UTC.localize(datetime.utcnow()).astimezone(tz) # now in this timezone
eight_am = tz.localize( datetime.combine( now.date(), time(8,0,0) ) ) 
(now - eight_am).total_seconds()

ブーストを使用して C++ でこれらのそれぞれを達成するにはどうすればよいですか?

4

1 に答える 1

0

私は自分の最初の部分に答えます:

namespace pt = boost::posix_time; 
pt::ptime now = pt::second_clock::local_time();
pt::ptime then = pt::ptime(now.date(),pt::hours(8));
pt::time_duration dt = now - then;      
std::cout << dt.total_seconds() << std::endl;
于 2012-11-06T18:42:43.520 に答える