Подтвердить что ты не робот

Как получить Timespan 1 год?

Я хочу получить структуру Timespan, которая представляет год в С#.

4b9b3361

Ответ 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);