Нет, это дизайн .
Если текущий экземпляр представляет високосный день в високосном году, возвращаемое значение зависит от целевой даты :
Если value
+ DateTime.Year
также является високосным годом, возвращаемое значение представляет високосный день в этом году.Например, если к 29 февраля 2012 года добавлено четыре года, возвращаемая дата - 29 февраля 2016 года.
Если value
+ DateTime.Year
не является високосным годом,возвращаемое значение представляет день до високосного дня в этом году.Например, если к 29 февраля 2012 года добавлен один год, возвращаемая дата будет 28 февраля 2013 года.
1 год после 29 февраля 2020 года должно быть 28 февраля 2021 года, поскольку не високосный год.Но в таком случае все годы после 2021 года будут работать как 28 февраля.
Кроме этого, спросите себя, что для вас означает "год"?Сколько дней в месяце?Сколько дней в году?Это 365?366?Или как Википедия указала 365.2425?Кроме того, о каком календаре идет речь?
Каркасы, библиотеки и т. Д. не работает так, как думают люди.Они работают на основе набора правил, определенных ранее..NET Framework определил это правило как таковое.Поэтому, когда вы добавляете год к экземпляру DateTime
, они решают, что часть месяца должна оставаться неизменной, часть года будет меняться в зависимости от того, сколько лет будет добавлено, а часть дня должна быть действительной * 1041.* один.