¿Hay una forma incorporada en .NET 3.5 para convertir un período ISO 8601 en .NET TimeSpan/ticks/milisegundos?Convierta el período de formato de ISO 8601 a ticks/milisegundos
Respuesta
Desafortunadamente no hay nada directamente incorporado en .NET.
Y no hay TimeSpan.ParseExact
antes de .NET 4 que podría utilizarse si se conocen los componentes de la cadena.
marcado respondió por ser el primero en responder. – yas4891
Incluso si no hay nada directamente en .Net framework, encontré que Joda.org ha implementado tal cosa y recordé que Jon hizo un puerto a .Net llamado noda-time.
Una primera vista en this source code muestra que implementó algo aquí para este propósito. Tal vez deberías hacer más investigaciones en este proyecto.
Gracias por ese enlace. bastante impresionante trabajo realizado allí – yas4891
No hay una forma incorporada. Para complicar aún más las cosas, ISO 8601 durations es, de hecho, totalmente incompatible con TimeSpan o cualquier otra forma exacta de medir el tiempo. La razón es que las duraciones ISO 8601 pueden contener años y meses. El problema con eso es que un año puede tener 365 o 366 días y un mes de 28 a 31 días. Joda-Time solves this problema al relacionar tales períodos inexactos con un instante en el tiempo.
A menos que sea suerte y los períodos de pasar a utilizar la P [AAAA] - [MM] - [hh] [DD] T: [mm]: formato [ss] porque entonces simplemente:
string period = "P0003-06-04T12:30:05";
TimeSpan span = new TimeSpan(DateTime.Parse(period.Remove(0,1)).Ticks);
Para mi tarea específica, esto normalmente debería ser algo así como "PT1S" o "PT0.05999999999S", por lo que el análisis no es un problema real. Solo quería obtener una buena solución para eso. ¡Gracias por tu respuesta! – yas4891
XmlConvert.ToTimeSpan
parece haber existido por siempre y hace exactamente lo que quiere.
- 1. Cómo crear un .NET DateTime desde el formato ISO 8601
- 2. DataContractJsonSerializer análisis iso 8601 fecha
- 3. ISO 8601 intervalo de repetición
- 4. La conversión de una fecha normal al formato ISO-8601
- 5. ISO Time (ISO 8601) en Python?
- 6. Inserción de MySQL a DATETIME: ¿es seguro usar el formato ISO :: 8601?
- 7. Analizando cadena ISO 8601 a DateTime en .NET?
- 8. NSDateFormatter no puede analizar a partir de la fecha en formato ISO 8601
- 9. Convertir marca de tiempo Unix a la norma ISO 8601
- 10. Cómo convertir la duración de ISO 8601 a TimeSpan en VB.Net?
- 11. Python - Convierte fecha de la norma ISO 8601
- 12. Lua ISO 8601 patrón de análisis de fecha y hora
- 13. ASP MVC 4 JsonResulta cómo usar las fechas ISO 8601?
- 14. En una fecha ISO 8601, ¿es obligatorio el carácter T?
- 15. Ordenar ISO 8601 fechas hacia adelante o hacia atrás
- 16. ¿Cómo convierto una cadena ISO 8601 en una Delphi TDate?
- 17. Date.js analizando incorrectamente una fecha UTC ISO 8601
- 18. ¿Cómo puedo exportar una cadena con formato ISO 8601 en JavaScript?
- 19. ¿Cómo puedo convertir un valor de fecha en formato ISO 8601 a un objeto de fecha en JavaScript?
- 20. ¿Cómo construyo un datetime ISO 8601 en C++?
- 21. obtener el ISO 8601 con segundos.de fracción decimal de segundo fecha en php?
- 22. Cómo analizar una duración ISO-8601 en Objective C?
- 23. Numeración de la semana ISO-8601 frente a la numeración de "Outlook" en PHP
- 24. Convierta archivos a formato UNIX usando Maven
- 25. iso 19794-2 formato de huella digital
- 26. conversión de marca de hora UTC con la norma ISO 8601 en Ruby
- 27. PHP ¿Convertir la fecha ISO a un formato más legible?
- 28. Analizar y crear ISO 8601 Intervalos de fecha y hora, como PT15M en PHP
- 29. Convierta una fecha mySQL a la fecha de Javascript
- 30. ¿Cuál es la diferencia entre los formatos de fecha ISO 8601 y RFC 3339?
@Timwi: soy un gran admirador de la brevedad. Sin embargo, también soy una persona amigable de forma natural. Entonces, ¿qué hay de malo en desear a todos un buen día de trabajo? – yas4891
porque el estilo de SO (y otros sitios de red de Stack Exchange) es no hacerlo. Para discusión use http://meta.stackoverflow.com. – Richard
Al eliminarlo, no estoy indicando que no sea amigable. Es solo que realmente no contribuye en nada a la pregunta. Recuerde que este no es un foro de discusión con publicaciones individualizadas. – Timwi