从当地时间早上8点开始,经过一段时间

时间:2012-11-06 14:15:49

标签: c++ datetime boost timezone

由于大多数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()

或者如果我多一点̶a̶n̶小心:

    
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 ++中的每一个?

1 个答案:

答案 0 :(得分: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;