【问题标题】:Display time string given system tick count显示给定系统滴答计数的时间字符串
【发布时间】:2014-02-05 01:36:15
【问题描述】:

给定:

  • 自通过unsigned int systemTicks(void); 冷启动以来的系统滴答数
  • 通过unsigned int usPerTick(void); 的每个系统滴答声的微秒数

如何在 C 中创建固定宽度的时间戳字符串?我可以灵活地使用这种格式,但希望最多支持 100 分钟并保持毫秒分辨率。一种示例格式是"99:59:999",这意味着自冷启动以来已经过去了 99 分 59.999 秒。

printf 允许我用最小宽度而不是最大宽度写小数(分、秒、毫秒)。我正在寻找简单的解决方案。

【问题讨论】:

标签: c timestamp


【解决方案1】:

您想打印一个固定宽度,以微秒为单位的前导零小数部分。由于微秒中有 6 位数字,所以你想要,

sprintf(timestamp,"%d:%02d.%06d",ticks/60,ticks%60,mseconds);

并添加结构/指针的味道......

【讨论】:

  • 我选择了sprintf(timestamp, "%02d:%02d.%03d", minutes, seconds, milliseconds);。对于固定宽度的字符串,分钟也需要前导零。我还添加了检查以确保分钟、秒和毫秒分别不超过 2、2 和 3 位数字,以确保时间戳缓冲区不会溢出。
  • 太棒了!我使用了类似的模式来记录嵌入式系统等的高分辨率时序。
猜你喜欢
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多