Quiero obtener una estructura Timespan que represente un año en C#.¿Cómo obtener un Timespan de 1 año?
Respuesta
Lo complicado es que lo que un año es, depende de dónde comienza.
Usted puede hacer
DateTime now = DateTime.Now;
TimeSpan span = now.AddYears(1) - now;
Esto le daría la 1 year timespan
desde el momento actual hasta un año después
sehe es correcto, un intervalo de tiempo de un año será único para cada punto de inicio. –
genial, gracias, pero ¿podría agregar algunos ejemplos de cómo se comporta? ¿Por qué es importante que 1 año de duración depende de dónde comienza? ahora mismo no puedo imaginar dónde podría estar el problema, pero sé que tiene que estar en algún lugar :) gracias – Zavael
oh ahora me di cuenta, ¿por qué cuando agrego 1 año como en esta respuesta y luego obtengo el XmlConvert.ToString (span) siempre hace días del año ... Quiero una salida como PnYnMnDnHnMnS ... y siempre hace PnDnH ... los años y meses no están presentes ¿por qué? – Zavael
No puede, como un año no tiene una longitud fija (¿es 365 o 366 días o aproximadamente 365.25?). Por eso también no se puede tener un mes como TimeSpan (28, 29, 30, 31 días ??)
DateTime intialDate = Date.Now.Date;
TimeSpan yearSpan = intialDate.AddYears(1).Subtract(intialDate)
Como otros peoplehave mencionados es posible que desee tener en cuenta los años bisiestos. En ese caso, puede iniciar intialDate en consecuencia.
ejemplo áspera:
TimeSpan oneYearSpan = new TimeSpan(365, 0, 0, 0);
hará esto?
Y si es un leapyear? –
¡Lo sé! :) Por eso es un ejemplo áspero. Mi voto es para sehe. – Nayan
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 longitud del año 2010, por ejemplo:
var timestamp = new DateTime(2011, 1, 1) - new DateTime(2010, 1, 1);
cambiar el año en el DateTimes
para encontrar la longitud del año que desee.
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 quiere un año a partir de hoy, vaya con la respuesta de @ sehe.
Si desea que el movimiento actual año con @Oyvind,
Si desea una aproximación razonable se puede ir con @Nayan, o para una utilización 365.25 aproximación:
TimeSpan oneYearSpan = new TimeSpan(365, 6, 0, 0);
Aquí está cómo hacerlo esto, utilizando el IsLeapYear para determinar el número de días.
int span = DateTime.IsLeapYear(1996) ? 366: 365;
var year1996 = new TimeSpan(span, 0, 0, 0);
No todos los períodos que duran en eyear comienzan el 1 de enero. No lo hagas así – oerkelens
Si quiere ser bastante preciso, puede usar la cantidad de nano segundos en un año. Creo que esto se mueve por 0.5 segundos cada siglo, ¡así que debería ser bueno durante 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, esto es sólo otra opción.
Y en un año bisiesto, tiene un día completo libre de lo que las personas más mojadas esperarían. No es una idea de dios – oerkelens
- 1. Fecha menos 1 año?
- 2. ¿Cómo selecciono los registros de menos de 1 año?
- 3. add + - 1 año en SQL Server
- 4. Timespan formato
- 5. Cómo obtener el año actual usando Vba
- 6. Resta 1 año de la fecha y hora
- 7. Agregando un TimeSpan a un DateTime dado
- 8. División de Timespan por un número
- 9. ¿Cómo lidiar con TimeSpan de redondeo?
- 10. Obtener un año atrás de la fecha actual
- 11. Obtener el próximo año del NSDate actual?
- 12. Como llegar TimeSpan de DateTime
- 13. LINQ Average TimeSpan?
- 14. ¿Cómo obtener el número de año con PHP?
- 15. Obtener un valor doble aleatorio entre -1 y 1
- 16. intersección Timespan en C#
- 17. ¿Cómo puedo obtener el número de días en un año usando JodaTime?
- 18. fecha de actualización + un año de MySQL
- 19. Cómo determinar dentro de un año en Javascript
- 20. ¿Cómo obtener segundos desde época (1/1/1970) en VBA?
- 21. Multiplica TimeSpan en .NET
- 22. C# + Formato TimeSpan
- 23. Datetime.now como valor de TimeSpan?
- 24. SQL Server: Obtener datos el año pasado
- 25. cómo convertir formato de 24 horas TimeSpan a formato de 12 horas TimeSpan?
- 26. ¿Cómo obtener el día del año en ruby?
- 27. TimeSpan FormatString con horas opcionales
- 28. cómo obtener el día del año en concha?
- 29. ¿Cuán exacto es Thread.Sleep (TimeSpan)?
- 30. TimeSpan DataFormatString en Gridview
[TimeSpan] (http://msdn.microsoft.com/en-us/library/system.timespan.aspx) es una estructura, no un objeto :-) –
año bisiesto, año normal o año promedio? –
Esta pregunta lleva a una buena discusión +1 – Matt