c ++适当的函数返回类型返回datetime?

时间:2011-10-28 21:16:31

标签: c++ datetime date time return-type

来自C#,我编写一个可能将DateTime作为返回类型(或参数)的类是很常见的。现在我用C ++编程。什么是适当的数据类型用作返回日期时间值的方法返回值(time_t,tm struct,Boost.Date_Time,还有其他什么?)例如:

class Customer
{
   ...
   ? GetDateTimeCreated() const;
   void SetLastContactDateTime(? date);
   ...
}

另外,接受日期/时间作为功能参数呢?

2 个答案:

答案 0 :(得分:2)

来自Boost.Date_Time的boost::posix_time::ptime是现代且功能齐全的,是与C#System.DateTime最接近的C ++模拟。

boost::posix_time::ptimeSystem.DateTime都是非常轻量级的结构,只包装无符号整数,因此它们是良好的函数返回值。

略有不同:boost::posix_time::ptime具有微秒精度(默认情况下,但模板参数可以提高精度),System.DateTime精度为100纳秒。

答案 1 :(得分:2)

如果您正在编写库,并且日期时间值将通过API公开,那么我将使用time_t,以便库的用户不会被强制使用Boost。

正如所指出的,struct tm用于格式化time_t。你通常不想传递那些。

如果您的程序已经使用了Boost,并且您喜欢Boost.DateTime的便利性,那么请务必使用Boost.DateTime。如果我没记错的话,boost::posix_time::ptime只是两个64位整数的包装器,因此它的重量足以传递值。

如果您正在使用C ++ 11功能,那么您可能希望使用<chrono>中的std::chrono::time_point。如果您仍然使用C ++ 03,则可以使用Boost.Chrono,它旨在实现C ++ 11时间工具。通过使用Boost.Chrono,您将来可以更轻松地切换到C ++ 11。 Chrono没有Boost.DateTime那么多的功能,但它比普通的time_t提升了一步。

如果你需要亚秒精度,那么Boost.DateTime或Chrono就是你​​的选择。

相关问题