Я хочу получить структуру Timespan, которая представляет год в С#.
Как получить Timespan 1 год?
Ответ 1
Сложно то, что год, зависит от того, где он начинается.
Вы можете сделать
DateTime now = DateTime.Now;
TimeSpan span = now.AddYears(1) - now;
Это даст вам 1 year timespan
с текущего момента до года
Ответ 2
Вы не можете, поскольку год не имеет фиксированной длины (это 365 или 366 дней или около 365,25?). Это также почему вы не можете иметь месяц как TimeSpan (28, 29, 30, 31 дней?)
Ответ 3
DateTime intialDate = Date.Now.Date;
TimeSpan yearSpan = intialDate.AddYears(1).Subtract(intialDate)
Как говорили другие люди, вы можете подумать о високосных годах. В этом случае вы можете установить intialDate соответственно.
Ответ 4
Пример:
TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);
Будет ли это делать?
Ответ 5
Ключевой вопрос: в каком году?
Продолжительность периода времени, очевидно, зависит от того, год, который вы хотите, високосный год или нет, и когда он начинается.
Если вы хотите, чтобы один год, начиная с сегодняшнего дня, отправлялся с ответом @sehe.
Если вы хотите, чтобы текущий год проходил с @Oyvind,
Если вы хотите разумную аппроксимацию, вы можете пойти с @Nayan или использовать для аппроксимации 365.25:
TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);
Ответ 6
Если вы хотите быть довольно точным, вы можете использовать количество nano секунд в год. Я думаю, что это движется на 0,5 секунды каждый столетие, так что должно быть хорошо еще долго!
public TimeSpan MyYear
{
get
{
// Year = 3.1556926 × 10^16 nanoseconds
return new TimeSpan(31556926000000000);
}
}
На этой странице уже есть некоторые хорошие ответы, это еще один вариант.
Ответ 7
Это зависит от того, какой год вы хотите представить, поскольку не все годы имеют одинаковую длину.
Это способ найти длину 2010 года, например:
var timestamp = new DateTime(2011, 1, 1) - new DateTime(2010, 1, 1);
Измените год в DateTimes
, чтобы найти длину года, который вы хотите.
Ответ 8
Здесь, как это сделать, используя IsLeapYear для определения количества дней.
int span = DateTime.IsLeapYear(1996) ? 366: 365;
var year1996 = new TimeSpan(span, 0, 0, 0);