仿照Date类设计一个Time类,可以设置时间、进行时间的加减运算、按照各种可能的格式输出时间。 与日期类一样,要考虑成员逻辑上的合理性和时间输出的不同格式;进行时间的加减运算时要注意时、分、秒的转换。 c++
时间: 2024-10-08 14:22:55 浏览: 33
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
在C++中,我们可以设计一个`Time`类来模拟`Date`类的功能。首先,我们需要考虑`Time`类包含私有变量,如小时(hour)、分钟(minute)和秒(second),以及可能需要的毫秒(millisecond)。以下是类的设计:
```cpp
#include <iostream>
#include <string>
class Time {
private:
int hour;
int minute;
int second;
int millisecond;
public:
// 构造函数设置默认值
Time(int h = 0, int m = 0, int s = 0, int ms = 0) : hour(h), minute(m), second(s), millisecond(ms) {}
// 设置时间
void setTime(int h, int m, int s, int ms) {
hour = h;
minute = m;
second = s;
millisecond = ms;
}
// 加法运算,注意时分秒的处理
Time add(Time other) {
int totalSeconds = (hour * 60 * 60) + (minute * 60) + second + (other.hour * 60 * 60) + other.minute * 60 + other.second;
return Time(totalSeconds % (24 * 60 * 60), totalSeconds / (60 * 60) % 60, totalSeconds / 60 % 60, totalSeconds % 60);
}
// 减法运算同上
Time subtract(Time other) {
int diffSeconds = this->totalSeconds() - other.totalSeconds();
return Time(diffSeconds % (24 * 60 * 60), diffSeconds / (60 * 60) % 60, diffSeconds / 60 % 60, diffSeconds % 60);
}
// 格式化输出
std::string format(const char* fmt) {
if (fmt[0] == 'h') {
return std::to_string(hour);
} else if (fmt[0] == 'm') {
return std::to_string(minute);
} else if (fmt[0] == 's') {
return std::to_string(second);
} else if (fmt[0] == 'ms') {
return std::to_string(millisecond);
}
return "Invalid format";
}
private:
int totalSeconds() const {
return hour * 3600000 + minute * 60000 + second * 1000 + millisecond;
}
};
```
阅读全文