将本地时间转换为字符串,从1jan1970转换为毫秒

时间:2013-08-19 05:58:48

标签: c time embedded stm32

我有这个字符串,它给我ddmmyyhhmmss:sss中的当前时间,相当于uint8_t array[8];

array[0] = date;
array[1] = month;
array[2] = year;    //13
array[3] = hours;
array[4] = minutes;
array[5] = seconds;
array[6-7] = milliseconds;

我想要的是从uint64_t变量中获取从1970年1月1日午夜到当前时间(以毫秒为单位)的时差。

我可以这样做吗? - > tm1结构= 1月1970日午夜 tm2 structure = array []的当前时间。

time1 = mktime(tm1);
time2 = mktime(tm2);
Difference = time1-time2;   //in milliseconds, if not then multiply by 1000

1 个答案:

答案 0 :(得分:0)

Time.h以1秒为增量工作,需要一个32位值,指定time_t 时间作为自1970年1月1日以来的秒数。

您需要一个实时时钟来每秒生成一个中断,ISR需要增加时间。您需要一些初始化时间的方法。然后,您可以使用time.h中的函数从时间派生各种格式的当前时间和日期。

如果您的系统还有1KHz中断时钟,您可以创建另一个变量int ms ,并从1KHz ISR递增它。 RTC ISR应将 ms 重置为零。然后可以通过连接时间 ms 来推断当前时间。 1970年1月1日早晨的午夜是时间 ms 为零的时间。

相关问题