【问题标题】:Epoch time into date/time format纪元时间转换为日期/时间格式
【发布时间】:2019-11-14 23:23:22
【问题描述】:

我有一个保存纪元时间的字符,我正在尝试将其转换为 YYYY/mm/dd/HH:MM:SS 的日期/时间格式,

我一直在使用 strftime,但似乎无法正确使用,

谁能帮帮我?

            time_t eventFinish = endTime;
            struct tm *tm2 = localtime(&eventFinish);
            //syslog( LOG_INFO, "eventFinish:: %s", eventFinish);
            char buf2[64];
            strftime( buf2, sizeof( buf2 ), "%Y%m%d%H%M%S", &tm2 );
            syslog( LOG_INFO, "Your time: %s", buf2 );

eventFinish 输出我期望的纪元时间,buf2 输出随机数。

【问题讨论】:

  • 您能展示一下您尝试过的内容和结果吗?也许有人能发现错误?

标签: c datetime epoch


【解决方案1】:

您必须首先将您的 unix 时间戳转换为 struct tm

time_t ts = 1562230784; // current time as example
struct tm *tm = localtime(&ts);

然后将其与strftime() 一起使用:

char buf[64];
strftime(buf, sizeof(buf), "%Y/%m/%d/%H:%M:%S", tm);
printf("Your time: %s\n", buf);

相关结构在time.h 中定义。 这应该做你想做的事。

请注意,这将返回系统中配置的本地时区的时间。要获取 UTC,您可以使用 gmtime() 而不是 localtime()

【讨论】:

  • 谢谢你帮了我很多,我添加了一个代码 sn-p 因为我仍然没有得到正确的结果
  • @GrantJamieson 审核此strftime(buf, sizeof(buf), "%Y/%m/%d/%H:%M:%S", tm); 和您的strftime( buf2, sizeof( buf2 ), "%Y%m%d%H%M%S", &tm2 );
猜你喜欢
  • 2015-01-23
  • 2018-09-21
  • 2012-09-06
  • 2018-05-16
  • 2012-12-17
  • 2014-01-25
  • 2018-04-24
  • 2011-12-06
  • 2020-05-24
相关资源
最近更新 更多