C++ C+中两个日期之间的差异+;
如何计算两个日期之间的天数。在整数变量(数组)中保存日期。如果有一些功能就好了。如果没有,我尝试了for循环,但没有找到正确的算法C++ C+中两个日期之间的差异+;,c++,C++,如何计算两个日期之间的天数。在整数变量(数组)中保存日期。如果有一些功能就好了。如果没有,我尝试了for循环,但没有找到正确的算法 #include <iostream> int stoi(std::string s); int main(){ /* 5th november of 2013 */ int days1[0] = 05; int days1[1] = 11; int days1[2] = 2013; /* 7th october
#include <iostream>
int stoi(std::string s);
int main(){
/* 5th november of 2013 */
int days1[0] = 05;
int days1[1] = 11;
int days1[2] = 2013;
/* 7th october of 2016 */
int days2[0] = 07;
int days2[1] = 10;
int days2[2] = 2016;
int days = date(days1,days2);
std::cout << days << std::endl;
return 0;
}
int date(int dates1[], int date2[]){
int days = 0;
/* Task: how much days is past */
/* Days in each month must be real (31 or 30 or 29/28) */
/* there can't be constant as 31 days on each month or 365 days in year */
return days;
}
#包括
int stoi(标准::字符串s);
int main(){
/*2013年11月5日*/
int days1[0]=05;
int days1[1]=11;
国际日1[2]=2013年;
/*2016年10月7日*/
int days2[0]=07;
int days2[1]=10;
int days2[2]=2016年;
整数天=日期(第1天,第2天);
std::cout您可能会对此感兴趣。
用C编写,但很容易转换为C++。
#include <iostream>
#include <ctime>
#include <cmath>
auto date(int date1[], int date2[]){
std::tm dur[2] {{0,0,0,date1[0],date1[1]-1,date1[2]-1900},{0,0,0,date2[0],date2[1]-1,date2[2]-1900}};
std::time_t t1 {std::mktime(dur)}, t2 {std::mktime(dur+1)};
if ( t1 != (std::time_t)(-1) && t2 != (std::time_t)(-1) ){
return std::difftime(t2, t1) / (60 * 60 * 24);
}else{
return (double)INFINITY;
//alternative: throw exception
}
}
int main(){
/* 5th november of 2013 */
int days1[] = {5,11,2013};
/* 7th october of 2016 */
int days2[] = {7,10,2016};
auto days = date(days1,days2);
if(std::isinf(days)){
std::cout << "cannot convert to time_t" << std::endl;
}else{
std::cout << days << std::endl;
}
return 0;
}
#包括
#包括
自动日期(整数日期1[],整数日期2[]{
std::tm dur[2]{{0,0,0,date1[0],date1[1]-1,date1[2]-1900},{0,0,0,date2[0],date2[1]-1,date2[2]-1900};
std::time_t t1{std::mktime(dur)},t2{std::mktime(dur+1)};
如果(t1!=(标准时间)(-1)和&t2!=(标准时间)(-1)){
返回std::difftime(t2,t1)/(60*60*24);
}否则{
返回(双)无穷大;
//备选方案:抛出异常
}
}
int main(){
/*2013年11月5日*/
int days1[]={5,112013};
/*2016年10月7日*/
int days2[]={7,102016};
自动天数=日期(第1天、第2天);
如果(标准:isinf(天)){
std::cout计算从开始日期(例如,1970年1月1日)到当前日期的时间(以秒为单位)。对两个日期都执行此操作。然后将两个日期减去,然后将结果计算回分钟/小时/天或月。您可以使用std::chrono::durationUse Boost。它有一个日期时间处理模块。在链接的副本中,(因为它还没有被选上榜首)。