我想做一个程序,在某个日期后打印出消息。有点像档案馆。例如,今天它应该只打印“hello”。第二天,它应该打印出“世界”。但是它仍然应该打印“hello”,因为我已经过了应该打印“hello”的日期。
我相信您可以使用一些基本的if条件来完成这项工作,只需比较localtimedstruct tm中的值,但我认为有一种更快、更有效的方法来完成这项工作。condition方法也需要非常长的代码。我尝试浏览stackoverflow,发现了if方法。问题是,difftime参数是

double difftime(time_t time1, time_t time0)

我不知道如何将localtime初始化为其中一个,将特定日期初始化为另一个。
简而言之,我的问题是:
如何将特定日期设置为时间变量?
如何将时间变量设置为difftime(如果要使用localtime方法,请告诉我如何将struct变量转换回struct tm localtime = *localtime(&time_t)变量,以便将其插入time_t的参数中)?

最佳答案

缺少的成分是mktime(),它将astruct 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()将它们规范化。请注意年份和月份的奇怪编码-一个遥远过去的遗迹。

关于c - 比较时间在C,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30170313/

10-11 18:33