Преобразовать период времени в формате ISO 8601 в тики / миллисекунды - PullRequest
10 голосов
/ 18 августа 2010

Есть ли в .NET 3.5 встроенный способ преобразования периода ISO 8601 в .NET TimeSpan / ticks / milliseconds?

Ответы [ 4 ]

6 голосов
/ 29 декабря 2011

XmlConvert.ToTimeSpan, кажется, существует вечно и делает именно то, что вы хотите.

2 голосов
/ 18 августа 2010

Даже если в .Net Framework ничего нет напрямую, я обнаружил, что Joda.org реализовал такую ​​вещь, и я вспомнил, что Jon перенес это на .Net называется нода-время .

Первый просмотр этого исходного кода показывает, что он что-то здесь реализовал для этой цели. Возможно, вам следует провести дальнейшие исследования в этом проекте.

1 голос
/ 18 августа 2010

Нет встроенного способа. Чтобы еще больше усложнить ситуацию ИСО 8601 длительности фактически абсолютно несовместимы с TimeSpan или любым другим точным способом измерения времени. Причина в том, что продолжительность ISO 8601 может содержать годы и месяцы. Проблема в том, что год может иметь 365 или 366 дней, а месяц - от 28 до 31 дня. Joda-Time решает эту проблему , связывая такие неточные периоды с моментом времени.

Если вам не повезло и Периоды не используют формат P [ГГГГ] - [ММ] - [ДД] Т [чч]: [мм]: [сс], поскольку тогда вы просто:

string period = "P0003-06-04T12:30:05";
TimeSpan span = new TimeSpan(DateTime.Parse(period.Remove(0,1)).Ticks);
1 голос
/ 18 августа 2010

К сожалению, в .NET нет ничего встроенного.

И до .NET 4 нет TimeSpan.ParseExact, который можно было бы использовать, если известны компоненты строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...