我尝试使用 strftime() 来获取格式化的时间戳。
char ft[ 256 ];
struct tm *tmp;
strftime( ft, 256, "%D - %T", tmp );
我的问题是我得到“13/02/60 - 03:07:-17958194”。有没有办法正确显示秒数?(我正在使用 Mac OS X 和 gcc)
我尝试使用 strftime() 来获取格式化的时间戳。
char ft[ 256 ];
struct tm *tmp;
strftime( ft, 256, "%D - %T", tmp );
我的问题是我得到“13/02/60 - 03:07:-17958194”。有没有办法正确显示秒数?(我正在使用 Mac OS X 和 gcc)
您在发布的代码中使用了未初始化的值,这可以解释您遇到此问题的原因。以下代码会导致您要查找的内容:
#include <stdio.h>
#include <time.h>
int
main(int argc, char *argv[]) {
char ft[256];
struct tm *tmp;
time_t curtime;
time(&curtime);
tmp = localtime(&curtime);
strftime(ft, 256, "%D - %T %s", tmp);
printf("%s\n", ft);
return(0);
}
然后,编译并运行示例:
cc -o time_ex time_ex.c
./time_ex
02/26/09 - 11:26:34 1235665594
ETA:当然,如果您只想要本地时间而不需要 UNIX 时间,请删除 %s。
假设您想要“mm/dd/yy - hh:mm:ss”,“%D - %T”应该会给你正确的结果。
如果您的示例对您的使用准确,您可能需要考虑为函数提供实时而不是内存中的某个随机地址。
%s 和 %S 是不同的格式字符。
您没有struct tm *tmp;
使用任何东西进行初始化 - 请您发布一个完整的示例吗?