将本地时间作为字符串转换为 1970 年 1 月 1 日起的毫秒

标签 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 结构 = 1970 年 1 月 1 日午夜 tm2 结构 = array[] 中的当前时间。

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

最佳答案

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

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

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

关于将本地时间作为字符串转换为 1970 年 1 月 1 日起的毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18307220/

相关文章:

MySql:最近的行之间的时间差

c - OpenSSL 库架构 i386 的 undefined symbol

c - 为什么它重复源字符串的最后四个字符

c++ - FFmpeg 潜在的内存泄漏行为点。有这样的吗?

Java - 打印过去 24 小时内保存到文本文件的数字

php - 如何在mysql中选择不同的日期格式

c++ - 24 位图像中有多少种颜色组合

embedded - 对嵌入式系统编程最合适(最佳)语言的建议?

serial-port - ttyO 端口在 beagleboard-xm 的 QEMU 1.4.0 运行镜像上没有正确的端口地址

linux - 通过 wpa_cli 测试和添加新无线网络配置的过程