我在描述問題時遇到了困難,所以如果我的問題標題看起來很奇怪,請原諒。如何在長變量中保留小時,分鐘和秒鐘?
我正在上課。
我於這些變量: 私人的,_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);
}
'_ticksPerSecond'爲100,但允許傳遞毫秒數。例如,2秒和567毫秒給出2 * 100 + 567 = 767'個刻度,這由您的規模,等於7秒和67毫秒。改變這也可以是使用'60 * _ticksPerSecond','60 * _ticksPerMinute'等等的一個很好的教訓,而不是僅僅是6000,360000等。它允許你只改變一個基於它而改變的那個,並且使得很明顯,你正在使用60秒/分鐘等。 – chris
這是一個很好的觀點......這是可能的我的老師(因爲這是一個家庭作業,我正在努力)作出了一個定義錯誤,或者我需要做比預期更多的數學...... –
@ Hobo42:評論使它清楚地表明一個嘀嗒和一個毫秒是完全不同的。 –