質問を明確に説明するのが難しいので、質問のタイトルが奇妙に思えたらすみません。
タイムクラスを作っています。
私はこれらの変数を使用しています: プライベート、 _ticks :
// 1 _ticks = 1/100 of a second
// 0 _ticks = 00:00:00.00 i.e. 12:00am
// a time is stored as a number of ticks since midnight
// for example 1234567 ticks would be 3:25:45.67am
long _ticks;
// the following static fields might come in handy
// 8,643,999 _ticks = 23:59:59.99 i.e. 11:59:59.99pm
static const long _lastTickOfTheDay = 8639999;
// 4,320,000 _ticks = 12:00:00.00 i.e 12pm i.e. noon
static const long _noon = 4320000;
// _ticks per second;
static const long _ticksPerSecond = 100;
// _ticks per minute;
static const long _ticksPerMinute = 6000;
// _ticks per hour;
static const long _ticksPerHour = 360000;
// _ticks per day
static const long _ticksPerDay = 8640000;
ということで、時、分、秒、ミリ秒で時間を設定する関数を作っています。これらすべての変数を使用して時間を設定するのは非常に簡単です。
void MyTime::SetTime(int newHrs, int newMins, int newSecs, int newMilisecs)
{
this->_ticks = (newHrs * _ticksPerHour) + (newMins * _ticksPerMinute)
+ (newSecs * _ticksPerSecond) + (newMilisecs);
}
次に、ミリ秒を維持しながら、時間、分、秒のみを設定する必要があります。これを行う方法の計算は私にはわかりませんが、これは私ができる限りのことです. ご覧のとおり、それほど多くはありません。
// Hours, Minutes, Seconds
void MyTime::SetTime(int newHours, int newMinutes, int newSeconds)
{
// Take the ticks apart and put them back together
int oldTime = _ticks;
int newTime = (newHours * _ticksPerHour) + (newMinutes * _ticksPerMinute)
+ (newSeconds * _ticksPerSecond);
}