c++ - 用独立于用户的等效项替换 time() 和 localtime()

标签 c++ c time clock localtime

我有一个程序使用 time() 和 localtime() 来设置内部时钟,但这需要更改,以便内部时钟独立于用户和“实时”时间。我需要能够设置任何合理的开始时间,并根据程序内部的计时器让它向前计数。关于解决此问题的最佳方法的任何想法?以下是摘录:

#define ConvertToBCD(x) ((x / 10) << 4) | (x % 10);
time_t  tm;
time(&tm);
struct tm *tm_local= localtime(&tm);
tm_local->tm_year %= 100;
tm_local->tm_mon++;
timedata[0] = ConvertToBCD(tm_local->tm_year);
timedata[1] = ConvertToBCD(tm_local->tm_mon);
timedata[2] = ConvertToBCD(tm_local->tm_mday);
timedata[3] =  (tm_local->tm_wday + 6) & 7;
if (!(TimeStatus & 0x02)) tm_local->tm_hour %= 12;
timedata[4] = ((tm_local->tm_hour < 12) ? 0x00 : 0x40) | ConvertToBCD(tm_local->tm_hour);
timedata[5] =  ConvertToBCD(tm_local->tm_min);
timedata[6] =  ConvertToBCD(tm_local->tm_sec);

最佳答案

在 POSIX 兼容系统下,time_t 只是自 epoch,1970 年 1 月 1 日 0:00:00 以来的秒数。

只需将一个(可能为负的)值添加到 time_t 以更改时间,确保该值不会溢出,然后像往常一样使用 localtime

关于c++ - 用独立于用户的等效项替换 time() 和 localtime(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741254/

相关文章:

c++ - 如何通过C程序打开Cmd(命令提示符)

C 带 block : Stack-based blocks going out of scope

php - 我的一些代码使用 strftime() 的奇怪行为

具有唯一静态成员的 C++ 模板

c++ - 为什么函数指针地址在 C++ 中以 bool 类型打印?

c++ - 在 win 7 64 位的 visual studio 2012 中编写 x86 汇编代码的问题

python - 调用在 c 中创建文件的 python 函数

python - 如何确保函数在 Go 中花费一定的时间?

.net - 自 0001 年 1 月 1 日起,如何将日/月/年日期转换为 .NET 样式的 100ns 刻度?

c++ - 如何比较文件包含的下一个字符?