我希望有人可以让我走上正确的道路。我正在开发一个将使用fitSDK的嵌入式项目。 .fit文件中的字段之一是时间戳。

适合文件的唯一有效时间戳是uint32_t,它是1989年12月31日UTC 00:00以来的秒数。

由于他们没有使用纪元时间,所以这可能会变得很丑。。。。

欢迎使用代码段和/或指向良好信息的链接。

最佳答案

解决此问题的方法是找出1989年12月31日UTC的EPOC时间戳是什么,并将其用作常量。然后我们从GPS数据中填充当前UTC,并应用mktime()函数,然后将其减去即可。代码段如下:

// utyear is two digits and tm_year is since 1900
utc_time.tm_year = pxFSTGPSrecord->utyear + 100;
utc_time.tm_mon = pxFSTGPSrecord->utmonth-1;
utc_time.tm_mday = pxFSTGPSrecord->utday;
utc_time.tm_hour = pxFSTGPSrecord->utch;
utc_time.tm_min = pxFSTGPSrecord->utcm;
utc_time.tm_sec = pxFSTGPSrecord->utcs;
utc_time.tm_isdst = 0;
utc_timestamp = mktime(&utc_time);
fit_timestamp = utc_timestamp - EPOC_TIMESTAMP;

07-28 03:05