0

我有这个字符串,它给了我当前时间,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 结构 = 1970 年 1 月 1 日午夜 tm2 结构 = 来自数组 [] 的当前时间。

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

1 回答 1

0

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

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

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

于 2013-09-06T11:28:49.227 回答