2

由于大多数 DST 时髦的事情发生在午夜左右,我认为简单地从“上午 8 点”时间减去当前时间应该是相当安全的,但这不是我很喜欢的解决方案。

(下面假设机器的当地时间是美国/纽约,这是一个安全的假设)

为了解释我在找什么,这是我在 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()

我将如何通过 boost 实现 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 回答