使用strftime获取时间戳

时间:2015-09-02 09:38:20

标签: c

我有几秒钟long tv_sec的时间,我希望使用%Y-%m-%d %X函数使用格式stftime获取正确的日期和时间。 所以我有几秒钟的时间戳,我想用stftime转换它。

这是我的试用

struct tm dateStruct;
  memset(dateStruct, 0, sizeof(struct tm));

  gmtime(&timestampInSecs,dateStruct);

  char buffer[80];

  strftime(buffer,80,"%Y-%m-%d %X", dateStruct);
  printf("Formatted date & time : |%s|\n", buffer );

1 个答案:

答案 0 :(得分:0)

确保timestampInSecstime_t类型并尝试此操作:

    char buffer[80];

    strftime(buffer,80,"%Y-%m-%d %X", gmtime(&timestampInSecs));

    printf("Formatted date & time : |%s|\n", buffer );

修改

示例:如果timestampInSecs代表1/1/2000的秒数,则必须使用1/1/1970的所有秒数补偿变量(Linux time.h中的纪元) 从1970年1月1日到2000年1月1日,我们有:

  • 10957
  • 262968小时
  • 946684800

最后,您必须将946684800加到您的变量中才能使用strftime,如我的代码所示。

然后您必须做的是计算1/1/1970与您的开始日期和时间(timestampInSecs=0的日期和时间)之间的秒数