我尝试使用strftime()来获取格式化的时间戳。
char ft[ 256 ];
struct tm *tmp;
strftime( ft, 256, "%D - %T", tmp );
我的问题是我得到了“13/02/60 - 03:07:-17958194”。有没有办法正确显示秒数? (我正在使用Mac OS X和gcc)
答案 0 :(得分:7)
您在已发布的代码中使用了未初始化的值,这可以解释您遇到此问题的原因。以下代码会产生您要查找的内容:
#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。
答案 1 :(得分:3)
“%D - %T”会给你正确的结果。
如果您的示例与您的使用相符,您可能需要考虑实时提供该功能而不是内存中的某个随机地址。
答案 2 :(得分:1)
%s和%S是不同的格式字符。
答案 3 :(得分:0)
你没有用任何东西初始化struct tm *tmp;
- 请你发一个完整的例子吗?