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