2011-08-25 18 views
2

我有一個類需要包含一個時間變量。怎麼做?我想指定我與服務器進行通信,並在我收到的時間段中作爲響應,例如:2011-07-01T14:32:39 + 02:00 .APPRECIATE。 THX如何聲明和定義時間數據?

P.S我想使用C++ API。

回答

0

有幾種解決方案各有其他缺點。一種方法是計算時間戳並將其保存爲數字。另一種方法是使用boost date_time(如果你可以引入依賴來提升,我更喜歡)。這一切都取決於你需要做什麼與時間。如果你只需要保存它,並且不需要對它進行計算,甚至可以使用std :: string就足夠了。如果你需要對它進行非常簡單的操作,時間戳可能是足夠好的,也是最簡單的方法(但是你仍然有解析它的負擔)。對於複雜的東西,提升將是我首選的方式。

+0

作爲客戶我只是想打印數據。但我想提一下,客戶在當前數據時間內填充課程也是可行的。所以你看到我需要用當前時間從班上填充變量的東西,因爲我已經在我的問題中提到過,並且還打印了它。 – sunset

0

您可以使用tm結構來保存時間數據。

我最近在我非常現代的C++項目中上過老派,並且使用sscanf來解析傳入的數據字符串(來自RSS,ATOM),因爲我不想依賴任何特定於操作系統的框架(應用程序是對於Cocoa Touch和Windows),也不引入Boost依賴。它一如既往地表現出色。

1

如果您可以使用boost,請轉至boost::posix_time::ptime,因爲這易於使用。

#include <boost/date_time/posix_time/posix_time.hpp> 

using boost::posix_time; 
// local time with second precision 
ptime currentTime(second_clock::localtime()); 
// UTC time with second precision 
ptime currentTime(second_clock::universal_time()); 
// local time with microsecond precision 
ptime currentTime(microsec_clock::localtime()); 
// UTC time with microsecond precision 
ptime currentTime(microsec_clock::universal_time()); 

對於字符串,你可以使用下面的

std::string s = "2011-08-25 23:59:59.000"; 
// get ptime from a string 
ptime t = time_from_string(s); 
// get string from ptime 
std::string s = to_simple_string(currentTime); 

欲瞭解更多信息,請看看docs

+0

什麼是time_from_string(s)?請你詳細介紹ptime t和std :: string s? – sunset

+0

有沒有一種方法可以從字符串和字符串中獲取時間而無需使用boost? – sunset

+0

@sunset:'time_from_string'完成它的功能。它將字符串解析爲一個'ptime'對象。欲瞭解更多信息,請查看我提供的鏈接。 'std :: string s'是將'ptime'轉換爲字符串時得到的字符串。 – murrekatt