我想提前2小时的时间。 目前我正在尝试这个:我在小时值中添加2
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小时...... 任何人都可以给我一些建议或帮助。
答案 0 :(得分:4)
即使您设法在午夜解决问题,也需要考虑夏令时,并且包装数月,这意味着您还必须考虑闰年......不要去那里。
相反,在将转换为time_t
之前,将添加2小时(2 * 60 * 60秒)要容易得多:
t = time(NULL) + 2 * 60 * 60;
date = localtime(&t);
这更加可靠,因为time_t
只是自某个明确定义的时代以来的秒数。