比较 C 中的时间

Compare time in C

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

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

double difftime(time_t time1, time_t time0)

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

简而言之,我的问题是:

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

  2. 如何将time_t变量设置为localtime(如果您要使用struct tm localtime = *localtime(&time_t)方法,请告诉我如何转换结构变量返回到 time_t 变量中,这样我就可以将它插入到 difftime)?

  3. 的参数中

缺少的成分是 mktime(),它将 struct tm 转换回 time_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() 会将它们归一化。请注意年份和月份的不稳定编码——这是遥远过去的遗迹。