new c# timespan

c# - new - ¿Cómo obtener un intervalo de tiempo de 1 año?



timespan to time format (8)

Aquí se explica cómo hacer esto, utilizando IsLeapYear para determinar la cantidad de días.

int span = DateTime.IsLeapYear(1996) ? 366: 365; var year1996 = new TimeSpan(span, 0, 0, 0);

Quiero obtener una estructura de Timespan que represente un año en C #.


Depende del año que desee representar, ya que no todos los años tienen la misma duración.

Esta es la manera de encontrar la duración de 2010, por ejemplo:

var timestamp = new DateTime(2011, 1, 1) - new DateTime(2010, 1, 1);

Cambie el año en DateTimes para encontrar la duración del año que desea.


Ejemplo áspero:

TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);

¿Con esto bastará?


La pregunta clave aquí es: ¿qué año?

La duración del período de tiempo, obviamente, depende de si el año que desea es un año bisiesto o no y cuándo comienza.

Si quieres un año a partir de hoy, ve con la respuesta de @sehe.

Si quieres el año en curso ve con @Oyvind,

Si desea una aproximación razonable puede ir con @Nayan, o para una aproximación de 365.25 use:

TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);


Lo complicado es que lo que es un año, depende de dónde comienza.

Tu puedes hacer

DateTime now = DateTime.Now; TimeSpan span = now.AddYears(1) - now;

Esto le daría 1 year timespan de 1 year timespan de 1 year timespan desde el momento actual hasta un año después


No puede, ya que un año no tiene una duración fija (¿es 365 o 366 días o aproximadamente 365.25?). Por eso también no puedes tener un mes como TimeSpan (28, 29, 30, 31 días?)


Si quieres ser bastante preciso, puedes usar la cantidad de nano segundos en un año. Creo que esto se mueve 0.5 segundos cada siglo, ¡así que debería ser bueno por mucho tiempo todavía!

public TimeSpan MyYear { get { // Year = 3.1556926 × 10^16 nanoseconds return new TimeSpan(31556926000000000); } }

Ya hay algunas buenas respuestas en esta página, esta es solo otra opción.


DateTime intialDate = Date.Now.Date; TimeSpan yearSpan = intialDate.AddYears(1).Subtract(intialDate)

Como otras personas han mencionado, es posible que desee considerar años bisiestos. En ese caso, puede iniciar intialDate en consecuencia.