strftime()无法正确显示秒数

时间:2009-02-26 16:15:16

标签: c time formatting timestamp

我尝试使用strftime()来获取格式化的时间戳。

char ft[ 256 ];
struct tm *tmp;
strftime( ft, 256, "%D - %T", tmp );

我的问题是我得到了“13/02/60 - 03:07:-17958194”。有没有办法正确显示秒数? (我正在使用Mac OS X和gcc)

4 个答案:

答案 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)

假设你想要“mm / dd / yy - hh:mm:ss”,那么

“%D - %T”会给你正确的结果。

如果您的示例与您的使用相符,您可能需要考虑实时提供该功能而不是内存中的某个随机地址。

答案 2 :(得分:1)

%s和%S是不同的格式字符。

  • %s是自unix纪元以来的秒数。
  • %S是当前时间的秒值(00-60),其中前导0表示数字&lt; 10。

答案 3 :(得分:0)

你没有用任何东西初始化struct tm *tmp; - 请你发一个完整的例子吗?