簡體   English   中英

如何正確地從tm轉換為time_t?

[英]How do I correctly convert from tm to time_t?

我想創建一個tm並用特定的時間填充它,然后我想從中減去一定的時間。

這就是我到目前為止

time_t time_1, time_2;
struct tm tm;
struct tm tm2;

strptime("1 1 1900 12:43:40", "%d %m %Y %H:%M:%S", &tm);
strptime("1 1 1900 11:33:45", "%d %m %Y %H:%M:%S", &tm2);


time_1 = mktime(&tm);
time_2 = mktime(&tm2);

//    time_1  = difftime(time_2,  time_1);                                                
cout << ctime(&time_1) << endl;
cout << asctime(&tm);

我打算使用difftime來計算差異,但是ctime與asctime的顯示時間不同,我在哪里出錯?

該差異可能是由於夏令時差異引起的,即結構tm的tm_isdst字段。 調用ctime(t)等效於asctime(localtime(t)),因此請嘗試僅調用localtime(time_1)並將結果逐字段與tm進行比較。 我還建議不要調用您的變量tm,因為當它與struct同名時可能會造成混淆,尤其是因為它是C ++,因此struct關鍵字是可選的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM