如何在C语言中使用未来时间获取日期
我想提前两个小时确定日期。 目前我正在尝试这样做:在小时值中添加2如何在C语言中使用未来时间获取日期,c,C,我想提前两个小时确定日期。 目前我正在尝试这样做:在小时值中添加2 void printTodayFutureTime() { char finalDate[50]; time_t t; struct tm *date; memset(finalDate, '\0', 50); t = time(NULL); date = localtime(&t); if(date ==
void printTodayFutureTime()
{
char finalDate[50];
time_t t;
struct tm *date;
memset(finalDate, '\0', 50);
t = time(NULL);
date = localtime(&t);
if(date == NULL)
{
printf("Unable to get localtime\n\n");
return;
}
int today = date->tm_mday;
int month = date->tm_mon + 1;
int year = date->tm_year + 1900;
int hour = date->tm_hour;
int minute = date->tm_min;
int sec = date->tm_sec;
snprintf(finalDate, 50, "%d-%d-%dT%d:%d:%d", year, month, today, hour + 2, minute, sec);
printf("Today's date with future time is: %s\n\n", finalDate);
}
但是如果时间是22,23,这将不起作用,因为它将跳到24和25。。。
任何人都可以给我一些建议或帮助。即使你设法解决了午夜的问题,也要考虑夏令时和包装月份,这意味着你还必须考虑闰年。。。不要去那里 相反,在将时间转换为
time\t
之前,只需在时间上增加2小时(2*60*60秒)就容易多了:
t = time(NULL) + 2 * 60 * 60;
date = localtime(&t);
这要可靠得多,因为
时间\u t
只是自某个定义明确的时代以来的秒数。即使你设法解决了午夜的问题,也要考虑夏令时和包装月份,这意味着你还必须考虑闰年。。。不要去那里
相反,在将时间转换为time\t
之前,只需在时间上增加2小时(2*60*60秒)就容易多了:
t = time(NULL) + 2 * 60 * 60;
date = localtime(&t);
这要可靠得多,因为
time\u t
只是一些定义良好的历元之后的秒数。以下是所有标准时间操作函数的描述如果使用mktime
系统函数,它将自动调整传递给它的struct tm
值,即使超出正常范围。以下是所有标准时间操纵功能的说明,如果您使用mktime
系统功能,它将自动调整您传递的struct tm
值,即使它们超出正常范围。请注意,即使时间\t
值通常表示为秒数,C也不能保证这一点。向时间\t值添加秒数是不可移植的,因此最好使用标准库函数来处理返回值。有关详细信息,请参阅此答案:请注意,尽管time\t
值通常表示为秒数,但C无法保证这一点。向time\t值添加秒数是不可移植的,因此最好使用标准库函数来处理返回值。有关详细信息,请参阅此答案: