关于c#:写出日期范围内的年数和月数(即2年零3个月)

Writing out how many years and months are in a date range (i.e. 2 years and 3 months)

本问题已经有最佳答案,请猛点这里访问。

如果是2016年2月1日至2019年1月31日:我想输出:"3年",因为日期范围是3年。

如果是2016年2月1日至2019年3月31日:我想输出:"3年2个月",因为日期范围是3年2个月。

我不需要担心白天,所以如果这是正常的话,我可以把时间凑到一起。

外面有没有帮手能帮我做这种事?


你可以使用它,它并不真正关心闰年:

1
2
3
4
5
DateTime first = new DateTime(2016, 2, 1);
DateTime second = new DateTime(2019, 3, 31);
double totalMonths = (second - first).TotalDays / (365.25 / 12);
int years = (int)totalMonths / 12;
int months = (int)Math.Round(totalMonths - (years * 12), 0);


对于大约计算年和月,可以执行以下操作:

1
2
3
4
5
6
DateTime dayStart;
DateTime dateEnd;

TimeSpan ts = dateEnt - dateStart
int years = ts.Days / 365;
int months = (ts.Days % 365) / 31;

对于精确的计算,考虑闰年、不同月份的天数等可能很难。