如何声明和定义时间数据?

时间:2011-08-25 06:58:21

标签: c++

我有一个需要包含时间变量的类。怎么做?我想指定我与服务器进行通信,并在收到的时间部分作为响应,例如:2011-07-01T14:32:39 + 02:00 .APPRECIATE。 THX

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

3 个答案:

答案 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就足够了。如果你需要对它进行非常简单的操作,时间戳可能足够好并且是最简单的方法(但是你仍然有解析它的负担)。对于复杂的东西,提升是我的首选方式。