C strftime()无法正确显示秒数

C strftime()无法正确显示秒数,c,time,formatting,timestamp,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您在发布的代码中使用了未初始化的值,这可以解释出现此问题的原因。以下代码将生成您要查找的内容: #include <stdio.h> #include <time

我试着用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);
}

预计到达时间:如果您只想在本地时间之后不使用UNIX时间,请删除%s。

您不是在初始化struct tm*tmp;有什么问题吗?请您发布一个完整的示例?

%D-%T应该会给您正确的结果,假设您想要mm/dd/yy-hh:mm:ss


如果您的示例对您的用法是准确的,那么您可能需要考虑在内存中赋予函数一个实时而不是一些随机地址。

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

%s是自unix纪元以来的秒数。 %S是当前时间的秒值00-60,数字小于10时前导0。
@布莱恩:以24小时表示的时间%H:%M:%s%s%s%s是什么?这不应该只是一个%S吗?您的输出还有一个额外的:。这是真实的输出吗?%S%S%S我应该在从编辑器粘贴代码之前先阅读代码。如果你删除这个部分,这就是真实的输出。哈哈,哇。我需要更改我的单空格字体。在我当前的字体中,lower-s和upper-s几乎无法区分。无聊的。在你发布这篇文章之前,我不想再看一遍。不过,谢谢。这是一个完整的示例,我不知道如何初始化它。
cc -o time_ex time_ex.c
./time_ex
02/26/09 - 11:26:34 1235665594