time()と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);
私はエポック時間のオフセットとして内部時間を保存します。 –