C++ MyDate 类设计与实现:日期操作与时间转换

本文将详细介绍使用 C++ 语言设计并实现一个名为 MyDate 的类,该类用于处理日期相关操作。

MyDate 类设计

MyDate 类包含以下成员:

  • 数据成员:
    • year: 表示年份的整数。
    • month: 表示月份的整数,从 0 开始计数(0 代表一月)。
    • day: 表示日期的整数。
  • 构造函数:
    • MyDate(): 无参数构造函数,创建一个表示当前日期的 MyDate 对象。
    • MyDate(elapsedTime: long): 使用自 1970 年 1 月 1 日零点以来的秒数 (elapsedTime) 创建 MyDate 对象。
    • MyDate(year: int, month: int, day: int): 使用指定的年、月、日创建一个 MyDate 对象。
  • 成员函数:
    • getYear(): int: 获取年份。
    • getMonth(): int: 获取月份。
    • getDay(): int: 获取日期。
    • setYear(year: int): void: 设置年份。
    • setMonth(month: int): void: 设置月份。
    • setDay(day: int): void: 设置日期。
    • setDate(elapsedTime: long): void: 使用时间戳设置日期。

UML 图

+----------------------+
|      MyDate          |
+----------------------+
| -year: int           |
| -month: int          |
| -day: int            |
+----------------------+
| +MyDate()            |
| +MyDate(elapsedTime: long) |
| +MyDate(year: int, month: int, day: int) |
| +getYear(): int      |
| +getMonth(): int     |
| +getDay(): int       |
| +setYear(year: int): void |
| +setMonth(month: int): void |
| +setDay(day: int): void |
| +setDate(elapsedTime: long): void |
+----------------------+

MyDate 类实现

#include <ctime>

class MyDate {
private:
    int year;
    int month;
    int day;
public:
    MyDate() {
        time_t currentTime = time(nullptr);
        tm* localTime = localtime(&currentTime);
        year = localTime->tm_year + 1900;
        month = localTime->tm_mon;
        day = localTime->tm_mday;
    }
    MyDate(long elapsedTime) {
        setDate(elapsedTime);
    }
    MyDate(int newYear, int newMonth, int newDay) {
        year = newYear;
        month = newMonth;
        day = newDay;
    }
    int getYear() const {
        return year;
    }
    int getMonth() const {
        return month;
    }
    int getDay() const {
        return day;
    }
    void setYear(int newYear) {
        year = newYear;
    }
    void setMonth(int newMonth) {
        month = newMonth;
    }
    void setDay(int newDay) {
        day = newDay;
    }
    void setDate(long elapsedTime) {
        time_t targetTime = (time_t)elapsedTime;
        tm* localTime = localtime(&targetTime);
        year = localTime->tm_year + 1900;
        month = localTime->tm_mon;
        day = localTime->tm_mday;
    }
};

int main() {
    MyDate date1;
    MyDate date2(343555551);

    std::cout << "Date 1: " << date1.getYear() << "/" << date1.getMonth() << "/" << date1.getDay() << std::endl;
    std::cout << "Date 2: " << date2.getYear() << "/" << date2.getMonth() << "/" << date2.getDay() << std::endl;

    return 0;
}

测试程序

测试程序创建了两个 MyDate 对象,一个使用无参构造函数创建当前日期,另一个使用时间戳创建特定日期。最后输出两个日期的年、月、日信息。

总结

MyDate 类提供了一种简单方便的方式来处理日期信息。它包含了多种构造函数,可以根据不同的需求创建日期对象。同时,它也提供了获取和设置日期信息的成员函数,以及使用时间戳设置日期的功能。这个类对于需要进行日期操作的应用程序来说非常实用。

C++ MyDate 类设计与实现:日期操作与时间转换

原文地址: https://www.cveoy.top/t/topic/orDE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录