如何在C中格式化系统时间?

时间:2012-10-13 06:10:05

标签: c time formatting strftime time.h

我正在研究一个程序元素,该程序在(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);

我通过打印时间来测试它,这是printf(“%s”,时间)的输出: 5.(时间是凌晨1点04分)

单独地,小时打印为空(上午1:08),并且分钟打印正确。

如何才能让数组时间保持格式正确的HH:MM时间?

感谢您的所有建议

2 个答案:

答案 0 :(得分:2)

如果我正确地读了你的问题,你应该可以用:

formtime->tm_min++; /* Additional checks needed. */
strftime(time, 10, "%H:%M", formtime);

答案 1 :(得分:1)

不是试图直接调整分钟而不必担心在一小时内进行换行,而是应该将时间调整60秒,然后再将其分成结构格式进行格式化:

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

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