C给定日期和今天日期之间的天数
发布时间:2020-12-16 10:12:09 所属栏目:百科 来源:网络整理
导读:我有一个名为int differenceDatesInDays(string date)的函数. 此函数应获取字符串值作为日期(YYYY-MM-DD)并将其与今天日期进行比较. 我不知道STL中是否有东西,我找不到匹配的算法.我刚刚发现boost有一个解决方案,但我不想使用boost. 所以,到目前为止这是我的
我有一个名为int differenceDatesInDays(string& date)的函数.
此函数应获取字符串值作为日期(YYYY-MM-DD)并将其与今天日期进行比较. 我不知道STL中是否有东西,我找不到匹配的算法.我刚刚发现boost有一个解决方案,但我不想使用boost. 所以,到目前为止这是我的代码: int differenceDatesInDays(string& date) { string year = date.substr(0,4); string month = date.substr(5,2); string day = date.substr(8,string::npos); int y = stoi(year); int m = stoi(month); int d = stoi(day); time_t time_now = time(0); tm* now = localtime(&time_now); int diffY = y - (now->tm_year + 1900); int diffM = m - (now->tm_mon + 1); int diffD = d - (now->tm_mday); int difference = (diffY * 365) + (diffM * 30) + diffD; return difference; } 我不知道如何确定这个月是30天,31天还是28天. 解决方法
沿着这些方向,也许是:
int differenceDatesInDays(string& date) { // Parse `date` as in your code int y = ...; int m = ...; int d = ...; tm then = {0}; then.tm_year = y - 1900; then.tm_mon = m - 1; then.tm_day = d; time_t then_secs = mktime(&then); time_t time_now = time(0); tm* now = localtime(&time_now); tm today = {0}; today.tm_year = now->tm_year; today.tm_mon = now->tm_mon; today.tm_day = now->tm_day; time_t today_secs = mktime(&today); return (today_secs - then_secs) / (24*60*60); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |