我喜歡根據秒數來計算當地時間(在某個時區)和GMT之間的差異。我使用下面的代碼片段:如何在Solaris上的C++中瞭解GMT和本地時間的區別?
time_t now = time(0); // GMT
time_t gmnow = mktime(gmtime(&now)); // further convert to GMT presuming now in local
time_t diff = gmnow - now;
但是,我得到了一個錯誤的區別。 我在這裏做的是通過時間(0)將當前時間查詢爲GMT。然後假設這是一個本地時間,我調用gmtime來添加GMT差異因子並使用mktime重新轉換爲本地時間。這應該顯示了GMT和我的時區的差異,但它顯示了1小時(夏令時)的額外差異。
例如,我現在的時間是週四年03月13 4時54分45秒EDT 2014 當我獲得當前時間GMT,這應該是: 週四年03月13 8點55分34秒格林尼治標準時間2014 考慮到這是當前如果我打電話給gmtime,這應該會進一步進行,重新轉換應該給我4小時的差異,但是我得到5小時的差異。
gmtime的用法在這裏是錯的嗎? 另外,如何知道當前時區以及夏令時?
與'時間(0)'你得到的是UTC時間不是格林威治標準時間 –
@ elvis.dukaj是的,正確的,但即使如此,我的目標是要知道GMT和當前時間與夏令時調整的差異(如果有的話)。請檢查我的答案 –