1

我正在尝试制作一个在特定日期之后打印出消息的程序。有点像存档。例如,今天它应该只打印出“hello”。第二天,它应该打印出“世界”。但它仍然应该打印出“hello”,因为我已经过了应该打印出“hello”的日期。

我相信您可以使用一些基本的 if 条件并仅比较 localtimed 中的值来做到这一点struct tm,但我认为有一种更快、更有效的方法来做到这一点。if条件方法也需要很长的代码。我尝试浏览stackoverflow并找到了difftime方法。问题是,difftime参数是

double difftime(time_t time1, time_t time0)

而且我不知道如何将本地时间初始化为其中一个,并将特定日期初始化为另一个。

所以简而言之,我的问题是:

  1. 如何将特定日期设置为 time_t 变量?

  2. 如何将 time_t 变量设置为localtime(如果您要使用该struct tm localtime = *localtime(&time_t)方法,请告诉我如何将 struct 变量转换回time_t变量,以便我可以将其插入到 的参数中difftime)?

4

1 回答 1

2

缺少的成分是mktime(),它将 a 转换struct tmtime_t

struct tm then;
then.tm_year = 2015 - 1900;
then.tm_mon  = 5 - 1;
then.tm_mday = 11;
then.tm_hour = 8;
then.tm_min  = 45;
then.tm_sec  = 0;
then.tm_dst  = -1;  // Undefined DST vs standard time

time_t now = mktime(&then);

struct tm *inverse = localtime(&now);

您可以调整结构中的值mktime()并将它们标准化。请注意年和月的不稳定编码——这是遥远过去的遗物。

于 2015-05-11T14:36:06.100 回答