2012-11-06 51 views
2

由於大多數DST時髦事件發生在午夜左右,我認爲從「上午8點」時間減去當前時間應該是相當安全的,但這不是一種解決方案,米很舒服。獲取自當地時間早上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() 

我將如何去實現C++中的每個提升?

+0

「發生在午夜」 - 是的,在凌晨2:00到具體。 –

+0

標題中提到「自上午8點以來的時間」,但您將其描述爲第一段中的解決方法。你試圖解決的根本問題是什麼? –

+0

我沒有描述「自8am以來」作爲解決方法,我描述了當地時間和當地時間早上8點之間的區別,作爲一種解決方法。爲什麼?因爲如果有一天我改變上午8點到午夜或上午,它會破壞代碼。因爲如果有一天我想讓它「從昨天上午8點開始」,那麼解決方案也會打破,等等。 第一種方法做出回答(簡單的區別)實際上會有幫助,我不熟悉與升壓時間功能。當然,第二種方式的答案會很棒。 –

回答

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; 
相關問題