到類似:歷史時間GMT UTC與DST
Convert historical time to GMT
這一次我的情況是: 我需要一些字符串時間轉換格式爲「2011061411322100」爲GMT。問題是時代來自另一臺個人電腦,並且是一個歷史時期。所以我沒有實時獲得時間,所以我不能簡單地從我的代碼運行的盒子上的當地時間獲取GMT。
時間代表開始和結束時間。如果我的代碼在時間更改期間運行,則時間更改將適用於我獲得時間的遠程框。所以如果在開始和結束時間之間發生變化,那麼結束時間將被抵消。
我想我必須先轉換成TM:
// add to tm struct
tm tmTime;
tmTime.tm_hour = hour;
tmTime.tm_min = min;
tmTime.tm_sec = sec;
tmTime.tm_mday = day;
tmTime.tm_mon = (month-1);
tmTime.tm_year = (year - 1900);
然後轉換爲time_t的
time_t tmInTime_t = mktime(&tmTime);
然後使用gmtime的:
struct tm *gmt = gmtime(&tmInTime_t);
這仍然會導致較大的增量,如果時間變化發生在開始和結束之間。我該如何解決? 我需要設置.tm_isdst嗎?我如何知道要設置什麼?
看着你的另一個問題我有點困惑:是2011061411322100 GMT/UTC或當地時間?另一臺個人電腦總是和主機一樣處於同一時區嗎?您希望輸出的格式是什麼? - 具有GMT/UTC值的結構tm? –
tz數據庫http://en.wikipedia.org/wiki/Tz_database有關於歷史時區的信息;但只有當你知道時區並且你知道另一臺PC正在遵守規則時纔有用。 –
可以在C++系統中使用嗎? –