Я хочу получить структуру Timespan, которая представляет год на C #.
Ключевой вопрос здесь: какой год?
Продолжительность временного интервала, очевидно, зависит от того, является ли нужный год високосным или нет, и когда он начинается.
Если вам нужен год, начиная с сегодняшнего дня, ответьте @ sehe.
Если вы хотите, чтобы текущий год шел с @Oyvind,
Если вы хотите получить разумное приближение, вы можете использовать @Nayan или использовать 365,25:
TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);
Грубый пример:
TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);
Будет ли это делать?
Если вы хотите быть достаточно точным, вы можете использовать количество наносекунд в году. Я думаю, что это движется на 0,5 секунды каждое столетие, так что должно быть хорошо еще долго!
public TimeSpan MyYear
{
get
{
// Year = 3.1556926 × 10^16 nanoseconds
return new TimeSpan(31556926000000000);
}
}
На этой странице уже есть несколько хороших ответов, это просто еще один вариант.
Вот как это сделать, используя IsLeapYear для определения количества дней.
int span = DateTime.IsLeapYear(1996) ? 366: 365;
var year1996 = new TimeSpan(span, 0, 0, 0);