【发布时间】:2015-05-11 14:26:34
【问题描述】:
我正在尝试制作一个在特定日期之后打印出消息的程序。有点像存档。例如,今天它应该只打印出“hello”。第二天,它应该打印出“世界”。但它仍然应该打印出“hello”,因为我已经过了打印“hello”的日期。
我相信您可以通过一些基本的 if 条件来执行此操作,并且只需比较本地时间 struct tm 中的值,但我认为有一种更快、更有效的方法来执行此操作。 if 条件方法也需要很长的代码。我尝试浏览stackoverflow,发现difftime 方法。问题是,difftime 参数是
double difftime(time_t time1, time_t time0)
我不知道如何将本地时间初始化为其中一个,并将特定日期初始化为另一个。
简而言之,我的问题是:
如何将特定日期设置到 time_t 变量中?
如何将 time_t 变量设置为
localtime(如果您要使用struct tm localtime = *localtime(&time_t)方法,请告诉我如何将结构变量转换回time_t变量,以便我可以插入到difftime)的参数中吗?
【问题讨论】:
-
请注意
struct tm localtime = *localtime(&time_t);不是有效的 C。您可以使用time_t whenever = 0; struct tm lt = *localtime(&whenever);来获取接近 Unix 纪元的日期/时间 — 1970-01-01 00:00:00 +00:00 - 或者您可能更传统并使用time_t whenever = 0; struct time *lt = localtime(&whenever);(但您可能更喜欢分配以避免其他调用时间转换函数的问题,或者您可能使用可重入版本,例如time_t whenever = 0; struct tm lt; localtime_t(&whenever, &lt);。