我需要计算给定日期的天数。一年有366天。但是,每个月都有一个不同的值,我必须指定这些值。有比我正在做的更快的方法吗?
#include<iostream>
using namespace std;
int main()
{
int day, month, year, dayNumber;
cout<< "Please enter the month, by numerical value:";
cin>> month;
cout<<"Please enter the day, by numerical value:";
cin>> day;
cout<<"Please enter the year, by numerical value:";
cin>> year;
if (month == 1)
{
dayNumber= day;
cout<< "Month;" << '\t'<< month << '\n'
<< "Day:"<<'\t'<< day<< '\n'
<< "Year:"<<'\t'<< year<<'\n'
<< "Day Number:"<< '\t'<< dayNumber<< endl;
}
else if(month==2)
{
dayNumber= day+31;
}
}
在许多方面,最好避免手动滚动。
使用提升:
#include <boost/date_time/gregorian/gregorian.hpp>
//...
try {
boost::gregorian::date d(year, month, day);
dayNumber = d.day_of_year();
}
catch (std::out_of_range& e) {
// Alternatively catch bad_year etc exceptions.
std::cout << "Bad date: " << e.what() << std::endl;
}
正如James Kanze建议的那样,您也可以使用mktime来避免依赖boost(未经测试):
tm timeinfo = {};
timeinfo.tm_year = year - 1900;
timeinfo.tm_mon = month - 1;
timeinfo.tm_mday = day;
mktime(&timeinfo);
dayNumber = timeinfo.tm_yday;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句