C ++根据输入的日期计算年,月和日的差异

时间:2014-09-06 18:00:34

标签: c++ time logic

我需要找到两个日期的差异。我不知道如何完全使用ctime库来获取系统时间并将其分配给我的变量然后使用,所以我手动设置它。即使手动操作,逻辑似乎也存在一些问题,因为我没有得到正确的答案。我并不担心几个月的长度不同,我目前处于初级水平。这就是我得到的。

#include <iostream>
#include <ctime>
using namespace std;

int main() {
    // current date/time based on current system
    time_t now = time(0);
    // convert now to string form
    char* dt = ctime(&now);
    cout << "Hello Customer, the current date and time is: " << dt << endl;

    int dm = 0; // day made
    int mm = 0; // month made
    int ym = 0; // year made
    int dc = 0; // current day, ect
    int mc = 0;
    int yc = 0;
    int dd = 0; // difference in days, ect
    int md = 0;
    int yd = 0;

    cout << "Please enter the current date in dd mm yyyy format, seperated by "
            "spaces.\n"
         << "Then enter the date the customer opened their account in dd mm "
            "yyyy format\n"
         << "On the same line, seperated by spaces " << endl;
    cin >> dc, mc, yc, dm, mm, ym;

    if (dc >= dm) {
        dd = dc - dm;
    }
    if (dc < dm) {
        mc--;
        dc += 30;
        dd = dc - dm;
    }

    if (mc >= mm) {
        md = mc - mm;
    }
    if (mc < mm) {
        yc--;
        mc += 12;
        md = mc - mm;
    }

    if (yc >= ym) {
        yd = yc - ym;

    } else {
        cout << "Account has not yet been created" << endl;
    }

    cout << "Thank you for being a customer with is for approximatly\n" << yd
         << " years " << md << " months and " << dd << " days." << endl;

    system("PAUSE");
    return 0;
}

使用ctime获取分配给我的变量的系统年,月和日的一些帮助会很有帮助,并且查看逻辑关闭的位置也会有所帮助。感谢您提供的任何帮助。

0 个答案:

没有答案