用c++计算时间
time in C++ calculation
我有一个包含记录的文本文件。我需要决定时间(这是记录结构的一部分)是否在2倍(存储在字符串中)之间,表示较低和较高的范围。在文件中,时间以145540123456表示,这意味着14是小时,55分,40秒,123456微秒精确。
我决定它是否在范围内的上限和下限时间,我以相同格式的字符串获得它,例如"093000000000"。我如何进行计算,我需要用time_t和时间库来做吗?
注意:我不能使用Boost
您指定的格式有一个简单的优点,即按字母数字排序这些时间字符串将使它们保持正确的顺序。
因此,使用strcmp
(如果使用以空结尾的char *缓冲区,则使用简单的C函数)或std::string
的比较运算符可以使您轻松地确定某个时间字符串是否属于一个区间。
这些方法可以导致很少的计算,例如,如果您比较的字符串的第一个字符不同,因为标准函数应该足够聪明,在确定结果后立即停止比较字符串。
如果您不减去这些数字,您应该能够将它们作为数字进行比较。代表更长的时间的数字也总是更大。这是因为最重的单位在左端(小时),最轻的单位在右端(微秒),这与正常数字使用的系统相同。
请将其转换为unsigned int64或其他类型,而不仅仅是int,因为它会被145540123456这样的数字溢出
在本例中,只需将其转换为数字并进行比较。您的格式将最有效的数字放在左边。您的最高可能数是235,959,999,999
,它不适合unsigned long。
一种简单的方法是在HHMMSS和mmmmmm处分割它——如果第一个数字相等,比较第二个。
在c++中处理日期/时间计算的最佳方法(c)是Boost。Date_Time图书馆。
不幸的是,您的字符串没有任何标准格式。因此,您必须自己解析它们,并将其用作posix时间持续时间的输入。
如果你不能使用任何库,你可以简单地定义一个结构体与小时,分钟,秒和微秒成员和operator<
。然后简单地将输入解析到这些结构体中,并对它们进行比较。
另一个选项是以微秒为单位转换每个持续时间。
- 如何计算Big-O表示法中的平均渐近运行时间
- 通过字符串来计算长度需要更长的时间,而不是移动字符串几次?
- 如何计算此排序函数的时间复杂度?
- 计算两个代码块的时间复杂度
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 如何计算函数的时间复杂度?
- 标准::映射::合并的计算时间复杂度
- 从ubuntu上的utc时间计算unix时间
- 为什么这个经过的时间(帧时间)计算会锁定我的游戏
- 计算C++军事时间的时差
- 以小于一毫秒的精度计算时间的功能
- 如何在长时间计算中进行C 的一次进度更新
- Qt C++ "keine Rückmeldung" - 长时间计算期间 GUI 中的错误
- 设置具有非constexpr函数的constexpr变量(但可以在编译时间计算)
- 需要为延迟时间计算编写算法
- int64 时间计算(C++)
- C++如何进行长时间计算
- 在编译时间计算中使用GMP
- 使用 Unix 程序时间计算每次迭代的程序运行时间
- 根据 SCTE 35 消息中的 pts 时间计算拼接事件的时间