我想做一个程序,在某个日期后打印出消息。有点像档案馆。例如,今天它应该只打印“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/