tyy030421 2021-12-08 15:15 采纳率: 100%
浏览 21
已结题

代码可以运行,但没有达到预期效果

#include <iostream>
using namespace std;
class Date
{
public:
    Date() {}//构造函数
    int fun(int y,int m, int d, int n, int w);
    ~Date() {};//析构函数
};

int Date::fun(int y, int m, int d, int n, int w)
{
    switch (m)
    {
    case 2:n = 28;
        if ((y % 4 == 0 && y % 100 == 0) || (y % 400 == 0))n++;//闰年二月天数加一
        break;
    case 4:case 6:case 9:case 11:n = 30;
        break;
    default:n = 31;
    }
    d++;
    if (d > n)d = 1, m++;
    if (m > 12)m = 1, y++;
    w++;
    if (w == 8)w = 1;
    return 0;
}

int main()
{
    Date date;
    int y; int m; int d; int n = -1; int w;
    cout << "请输入日期(如2019年2月28日星期四应输入2019 2 28 4):";
    cin >> y >> m >> d >> w;
    date.fun( y,  m,  d,  n, w);
    int choose;
    cout << "请选择输出方式:1.x年x月x日星期x   2.x/x/x";
    cin >> choose;
    if (choose == 1)
    {
        cout << y << "年" << m << "月" << d << "日星期" << w << endl;
    }
    else
    {
        cout << y << "/" << m << "/" << d << endl;
    }
    return 0;
}

我的预想是:输入一个日期,输出其第二天的日期;
但是现在,输入与输出的日期是一致的。

请问如何能够实现日期后推一天?谢谢解答。

  • 写回答

1条回答 默认 最新

  • 不务正业的学长 2021-12-08 15:46
    关注

    1、建议不要自己写这样的类,因为c++自带了struct tm和time_t结构可以实现你的功能。
    2、输入的日期比如说是当前日期;time_t lt;lt = time(NULL);这样就获取到了。
    3、下一天就直接lt += 86400;就可以了。86400代表24x60x60。
    4、把time_t It转成struct tm ,这样操作就可以了,struct tm * prt = localtime(&lt);
    5、把struct tm 转成time_t ,这样操作就可以了,time_t It= mktime(ptr);
    6、time_t 和struct tm,稍微百度一下就知道用法了。自己输入的日期赋值给struct tm,再如上转换一下就OK了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 12月8日

悬赏问题

  • ¥60 pb数据库修改或者求完整pb库存系统,需为pb自带数据库
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路