我有一个需要包含时间变量的类。怎么做?我想指定我与服务器进行通信,并在收到的时间部分作为响应,例如:2011-07-01T14:32:39 + 02:00 .APPRECIATE。 THX
P.S我想使用C ++ API。
答案 0 :(得分:1)
如果可以使用提升,请转到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。
答案 1 :(得分:0)
您可以使用tm
结构来保存时间数据。
我最近在我非常现代的C ++项目中上学,并使用sscanf
来解析传入的数据字符串(来自RSS,ATOM),因为我不想依赖任何特定于操作系统的框架(该应用程序适用于Cocoa Touch和Windows),也不介绍Boost依赖项。它一如既往地表现得非常好。
答案 2 :(得分:0)
有几个解决方案各有另一个缺点。一种是计算时间戳并将其保存为数字。另一种方法是使用boost date_time(如果你可以引入一个依赖来提升,我会更喜欢)。 这一切都在很大程度上取决于你需要做什么与时间。如果你只需要保存它并且不需要对它进行计算,甚至可能是std :: string就足够了。如果你需要对它进行非常简单的操作,时间戳可能足够好并且是最简单的方法(但是你仍然有解析它的负担)。对于复杂的东西,提升是我的首选方式。