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

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

10
задан Cœur 2 January 2017 в 18:06
поделиться

3 ответа

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

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

1
ответ дан 4 December 2019 в 01:29
поделиться

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

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

string period = "P0003-06-04T12:30:05";
TimeSpan span = new TimeSpan(DateTime.Parse(period.Remove(0,1)).Ticks);
1
ответ дан 4 December 2019 в 01:29
поделиться

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

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

2
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: