if(dt1.year!=dt2.year)
{
if(dt1.year>dt2.year) return 1; //判断年相等否
if(dt1.year<dt2.year) return -1;
}比如这里,如果两个year相等,就没有返值(当然,这是编译器的判断逻辑),编译器不会根据你上下文去统计逻辑的,因此会认为你if有返值,没有else语句中的返值。你将两个逻辑中的连续if改成if else应该就没问题了。
其实,如果年月日的规则是严格的,那么语句不用这么麻烦,直接判断
year*365+month*30+day 的大小即可判定两个日期的关系了。