比较 C 中的时间
Compare time in C
我正在尝试制作一个在特定日期后打印消息的程序。有点像档案馆。例如,今天它应该只打印出 "hello"。第二天,它应该打印出 "world"。但它仍应打印出 "hello",因为我已经过了应该打印出 "hello" 的日期。
我相信您可以使用一些基本的 if 条件并只比较本地时间 struct tm
中的值来做到这一点,但我认为有一种更快、更有效的方法可以做到这一点。 if
条件方法也需要一段长得离谱的代码。我尝试浏览 Whosebug 并找到了 difftime
方法。问题是,difftime
参数是
double difftime(time_t time1, time_t time0)
而且我不知道如何将本地时间初始化为其中一个,将特定日期初始化为另一个。
简而言之,我的问题是:
如何将特定日期设置到 time_t 变量中?
如何将time_t变量设置为localtime
(如果您要使用struct tm localtime = *localtime(&time_t)
方法,请告诉我如何转换结构变量返回到 time_t
变量中,这样我就可以将它插入到 difftime
)?
的参数中
缺少的成分是 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()
会将它们归一化。请注意年份和月份的不稳定编码——这是遥远过去的遗迹。
我正在尝试制作一个在特定日期后打印消息的程序。有点像档案馆。例如,今天它应该只打印出 "hello"。第二天,它应该打印出 "world"。但它仍应打印出 "hello",因为我已经过了应该打印出 "hello" 的日期。
我相信您可以使用一些基本的 if 条件并只比较本地时间 struct tm
中的值来做到这一点,但我认为有一种更快、更有效的方法可以做到这一点。 if
条件方法也需要一段长得离谱的代码。我尝试浏览 Whosebug 并找到了 difftime
方法。问题是,difftime
参数是
double difftime(time_t time1, time_t time0)
而且我不知道如何将本地时间初始化为其中一个,将特定日期初始化为另一个。
简而言之,我的问题是:
如何将特定日期设置到 time_t 变量中?
如何将time_t变量设置为
localtime
(如果您要使用struct tm localtime = *localtime(&time_t)
方法,请告诉我如何转换结构变量返回到time_t
变量中,这样我就可以将它插入到difftime
)? 的参数中
缺少的成分是 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()
会将它们归一化。请注意年份和月份的不稳定编码——这是遥远过去的遗迹。