разобрать дату iCalendar с помощью c # - PullRequest
1 голос
/ 14 сентября 2009

Есть ли прямой способ парсинга даты iCalendar в .net с использованием c #? Дата iCalendar выглядит следующим образом:

2009-08-11T10:00+05:0000

Мне нужно разобрать его, чтобы отобразить в дружественном формате ... спасибо

Ответы [ 3 ]

1 голос
/ 14 сентября 2009
string strDate = "2009-08-11T10:00+05:0000";
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.FullDateTimePattern = "yyyy-MM-ddTHH:mmzzz";

DateTime dt = DateTime.Parse(c.Substring(0, c.Length-2), dtfi);

zzz для часового пояса, но распознается только тогда, когда выражено так: + xx: xx. Я проверил на вашем примере, удаляя последние 2 0, а затем анализ с пользовательским DateTimeFormatInfo работает.

0 голосов
/ 14 сентября 2009

Поскольку это не стандартная строка формата, но вы знаете точный формат, вы можете использовать DateTime.ParseExact и указать строку пользовательского формата , например:

DateTime.ParseExact(d, "yyyy-MM-ddTHH:mmzzz00", CultureInfo.InvariantCulture);

Спецификатор 'zzz' представляет смещение часов и минут от UTC, а два заключительных нуля - это просто литералы, соответствующие формату, с которым вы имеете дело.

0 голосов
/ 14 сентября 2009

Вы можете использовать DateTime.Parse() для разбора всего до +. Я не знаю спецификацию формата iCalendar, но я предполагаю, что после + добавляются часы / минуты, добавляемые к дате до +. Таким образом, вы можете использовать AddHours() и AddMinutes(), чтобы добавить необходимые биты в DateTime, возвращаемый DateTime.Parse().

Это требует небольшого разбора строки, но с небольшим количеством регулярных выражений у вас все будет хорошо ...

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