如何在C中检查日期时间
我有以下代码:如何在C中检查日期时间,c,C,我有以下代码: int main(void) { struct tm str_time; time_t time_of_day; str_time.tm_year = 2012-1900; str_time.tm_mon = 6; str_time.tm_mday = 5; str_time.tm_hour = 10; str_time.tm_min = 3; str
int main(void) {
struct tm str_time;
time_t time_of_day;
str_time.tm_year = 2012-1900;
str_time.tm_mon = 6;
str_time.tm_mday = 5;
str_time.tm_hour = 10;
str_time.tm_min = 3;
str_time.tm_sec = 5;
str_time.tm_isdst = 0;
time_of_day = mktime(&str_time);
printf(ctime(&time_of_day));
return 0;
}
它工作得很好,但我找不到一种方法来验证代码中的日期和时间是否与计算机相同,有人知道如何比较这两个日期吗
。。。你知道如何比较这两个日期吗
OP正在做3件事,这会导致潜在的时间差
mktime(&stru\time)之前,代码可能没有填写所有需要的字段代码>。C至少指定9个字段。最好为零填充str_time
,然后设置7个字段。这是一个相对罕见的问题
struct tm
的值。一个常见的错误代码是tm_mon
是自一月起的月份,因此需要负1
str_time.tm_year = 2016-1900;
str_time.tm_mon = 6 - 1;
str_time.tm_mday = 25;
str_time.tm_hour = 6;
str_time.tm_min = 58;
str_time.tm_sec = 31;
str_time.tm_isdst = tbd; // see below
str_time.tm_isdst=0代码>将时间戳设置为无夏令时。通常最好使用str_time.tm_isdst=-1
并让系统确定DST是否有效
时间\u t
不同,建议使用计算机的时间并将其转换为年-月-日,然后进行比较。当然,任何差异/差异都会更容易理解
将计算机本地年、月、日与用户输入进行比较
// February 20, 2016
int y = 2016;
int m = 2;
int d = 20;
time_t now;
if (time(&now) == -1) Handle_Error();
struct tm *tm = localtime(&now);
if (tm == NULL) Handle_Error();
if (((tm->tm_year + 1900) == y) && ((tm->tm_mon + 1) == m) && (tm->tm_mday == d)) {
puts("Dates match");
}
time()
函数返回系统当前时间的视图:time\u t now=time(0)然后,您可以使用localtime()
对其进行分析,以获得分解时间。对于解析日期字符串,请考虑<代码> STRPIMTIME()>代码>。我想我解释错了。我想把我的日期与我的计算机的当前日期进行比较。e、 g.如果(mydatetime==datetimenow)printf(你的datetime等于计算机)
那么,如果你的计算机仍然认为它是2012年7月(请注意,月份“减少一个”),你就有问题了。恐怕你的“澄清”评论难以理解;阅读后我一点也不明白。使用2012只是一个例子,我想做的是检查未来的日期和时间,我需要将我的日期与您计算机上的当前日期进行比较。例如,2016-06-25 06:58:31
,你到达那个日期和时间的那一天,我想拉一个函数,问题是我想知道如何比较日期strtime
不在ISO C中,你可能需要下载一个免费软件实现。在那个家伙chux发布的代码中找到好的“偏差”总是非常罕见的。。。(我们会处理的)