C++中日期和时间的面向对象表示

5t7ly7z5  于 2023-05-24  发布在  其他
关注(0)|答案(4)|浏览(135)

此问题已在此处有答案

Is there any date-time module in c++(1个答案)
How to get current time and date in C++?(26答案)
11小时前关闭
我正在为嵌入式Linux系统编写C++代码。传统上,在Linux上,通过调用库函数gettimeofday()来检索日期和时间。但我觉得这不是很面向对象。我希望能够编写类似这样的代码:

DateTime now = new DateTime;
DateTime duration = new DateTime(2300, DateTime.MILLISECONDS)
DateTime deadline = now + duration;

while(now < deadline){
    DoSomething();
    delete now;
    now = new DateTime()
}

其中有一个DateTime类,它可以用当前时间或特定时间构造,并且提供成员函数甚至重载运算符来执行对所表示的日期和时间的操作。
C++标准库是否提供了类似的功能?我无法在目标系统上使用Boost库。但是,我可以考虑移植一些简单的东西(例如,只使用头文件实现的东西)。

fd3cxomn

fd3cxomn1#

标准C库中没有用于处理时间和间隔的面向对象接口。
你可能想看看Boost.Date_TimeBoost非常有用,而且写得很好,实际上它是标准C
库的一部分。

liwlm1x9

liwlm1x92#

所以我的目标不可能选择传送推进。相反,我不得不使用gettimeofday()。但是,在sys/time.h中有一些很好的宏用于处理timeval结构

#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

qni6mghb

qni6mghb3#

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

#include <ctime>

time
difftime
mktime

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

brc7rcf0

brc7rcf04#

/usr/include/linux/time.h

给出结构:

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

在Linux上,你可以使用它。

相关问题