写出日期范围内的年数和月数(即2年零3个月)

时间:2016-04-20 13:18:54

标签: c# datetime datetime-format

在2/1/2016 - 1/31/2019的情况下:
我想输出:'3年',因为日期范围是3年。

在2/1/2016 - 3/31/2019的情况下:
我想输出:'3年零2个月',因为日期范围是3年零2个月。

我不需要担心几天,所以如果这是常态,我可以进行整理。

那里有没有c#帮助器可以帮助我这样的事情?

2 个答案:

答案 0 :(得分:1)

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

DateTime dayStart;
DateTime dateEnd;

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

对于精确的计算,考虑到闰年,不同的天数等,这可能很棘手。

答案 1 :(得分:1)

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

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);