比较c ++中的日期

时间:2017-09-12 17:01:11

标签: c++

我是c ++的初学者,我正在努力使用日期。我认为ctime库可能会有所帮助,但我不确定。

对于我的计划,我需要让某人进入他们加入俱乐部的日期,然后我需要将其与当前日期进行比较以计算会员费。

我也不确定接受日期的最佳方式(例如,分别输入日/月/年或作为字符串一起输入?)。

我无法找到一种简单的方法,我会非常感谢一些帮助。谢谢。

3 个答案:

答案 0 :(得分:3)

您可以从用户那里获取日期,并使用strptime将其解析为tm结构。

例如:

tm timeDate;
strptime(input_str.c_str(),"%Y-%m-%d %H:%M", &timeDate); // define date / time format convenient for you here; this is just an example

然后转换为time_t类型:

time_t time_input = mktime(&timeDate);

然后与另一个time_t进行比较(以相同的方式创建或通过获取当前系统时间或您需要的任何内容);

double timeDiff = difftime(time_input, other_time_t_value);

使用的资源:

time tutorial

similar question

related question

另一种选择可能是Boost日期时间库(我不记得自己使用它,所以我不会做更多的事情而不是推荐你)推荐here

其他人阅读此问题的说明:我认为OP不使用C ++ 11或更高版本。如果你是,this answer可能对你更好。

答案 1 :(得分:0)

参考https://stackoverflow.com/a/997988/3989888

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

int main() {
    time_t t = time(0);   // get time now
    struct tm * now = localtime( & t );
    cout << (now->tm_year + 1900) << ' ' 
         << (now->tm_mon + 1) << ' '
         <<  now->tm_mday
         << endl;

    cout<<"Enter Date YYYY MM DD"<<endl;
    int y,m,d;
    cin>>y;
    cin>>m;
    cin>>d;

    cout<<"Member since: "<<y-now->tm_year-1900<<" years "<<m-now->tm_mon-1<<" months "<<d-now->tm_mday<<" days "<<endl;

}

答案 2 :(得分:0)

说真的吗?请编写现代代码并使用。 $roles = config('constants.roles'); public function siteAdminBrands() { return $this->hasMany(Brand::class, 'brand_has_users'); } public function clientAdminBrands() { return $this->hasMany(Brand::class, 'brand_has_client_admin'); } public function brands($query) { return $query ->when($this->hasRole($roles['brand_site_admin']),function($q){ return $q->with('siteAdminBrands'); }) ->when($this->hasRole($roles['client_admin']),function($q){ return $q->with('clientAdminBrands'); }); } }

这样的东西
std::chrono::duration