代码之家  ›  专栏  ›  技术社区  ›  mikelong

C++中TimeFayDay.()的最佳替代库是什么?

  •  3
  • mikelong  · 技术社区  · 15 年前

    是否有更多的面向对象的替代方法在Linux上使用C++中的GETTimeFayEd()?例如,我喜欢能够编写类似这样的代码:

    DateTime now = new DateTime;
    DateTime duration = new DateTime(2300, DateTime.MILLISECONDS)
    DateTime deadline = now + duration;
    
    while(now < deadline){
        DoSomething();
        delete now;
        now = new DateTime()
    }
    

    目标是一个嵌入式Linux系统,没有Boost库,但是可能有一些易于移植的东西(例如,一些只使用头文件实现的东西)。

    4 回复  |  直到 9 年前
        1
  •  6
  •   DevSolar    9 年前

    没有面向对象的接口来处理时间和时间间隔,这是标准C++库的一部分。

    你可能想看看 Boost.Date_Time 不过。 Boost 它非常有用,而且写得很好,它实际上是标准C++库的一部分。

        2
  •  2
  •   mikelong    15 年前

    所以我的目标不能选择移植Boost。相反,我不得不选择GetTimeOfDay()。但是,在 sys/time.h

    #include <sys/time.h>
    
    void timeradd(struct timeval *a, struct timeval *b,
              struct timeval *res);
    
    void timersub(struct timeval *a, struct timeval *b,
              struct timeval *res);
    
    void timerclear(struct timeval *tvp);
    
    void timerisset(struct timeval *tvp);
    
    void timercmp(struct timeval *a, struct timeval *b, CMP);
    

    不过,花了一段时间才找到它们,因为它们不在我机器的手册页上。请参阅本页: http://linux.die.net/man/3/timercmp

        3
  •  0
  •   Totonga    15 年前

    我想你应该可以用CTIME的东西

    #include <ctime>
    
    time
    difftime
    mktime
    

    应该以一种非常便携的方式完成这项工作。 cplusplus.com

        4
  •  0
  •   essbeev    15 年前
    /usr/include/linux/time.h 
    

    给出结构:

    struct timeval {
        time_t      tv_sec;     /* seconds */
        suseconds_t tv_usec;    /* microseconds */
    };
    

    在Linux上,也许你可以使用它…