0

我正在开发一个程序元素,该元素以(24 小时制)小时和分钟获取系统时间,并将其格式化为 HH:MM 并将其存储在数组中。分钟也必须增加 1。这是我的代码:

 strftime (timeh,10,"%H:",formtime);
 strftime (timem,10,"%M",formtime);
 timem1 = atoi(timem);
 ++timem1;
 itoa(timem1, timem, 10);
 strcpy(time, timeh);
 strcat(time, timem);

我通过简单地打印time来测试它,这是 printf("%s", time): 5. 的输出。(时间是凌晨 1:04)

单独地,小时打印为空(凌晨 1:08),分钟打印正确。

我该怎么做才能使数组时间保持格式正确的 HH:MM 时间?

感谢您的所有建议

4

2 回答 2

2

如果我没看错你的问题,你应该可以这样做:

formtime->tm_min++; /* Additional checks needed. */
strftime(time, 10, "%H:%M", formtime);
于 2012-10-13T06:14:29.063 回答
1

与其尝试直接调整分钟并且不必担心在整点换行,不如将时间调整 60 秒,然后再将其拆分为 struct tm 进行格式化:

time_t now;
time(&now);
now += 60;
strftime(buffer, sizeof(buffer), "%H:%M", localtime(&now));

请注意,调用您的数组time不是一个好主意,因为这将与time用于获取当前时间的标准函数相冲突。

于 2012-10-13T06:28:47.803 回答