Парсинг даты RFC 822 с NSDateFormatter

Мне действительно нравится , Продвигают , здесь можно получить обзор, , документация довольно хороша, и можно получить ее через ГРУШУ или SVN.

Вам только нужна работа установка PHP5, и Phing, чтобы начать генерировать классы.

16
задан Anurag 5 December 2009 в 01:52
поделиться

2 ответа

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

4
ответ дан 30 November 2019 в 23:09
поделиться

Я считаю, что RFC 822 определяет два необязательных компонента в дате и времени: день недели и секунды после часа.

В качестве взлома можно использовать символы для коротких дней. недели:

NSArray *shortWeekSymbols = [NSArray arrayWithObjects:@"Sun,", @"Mon,", @"Tue,", @"Wed,", @"Thu,", @"Fri,", @"Sat,", nil];
        [formatter setShortWeekdaySymbols:shortWeekSymbols];

Если вы затем измените формат даты на следующий: EEEdd MMM yyyy HH: mm: ss z . Вы сможете анализировать время с помощью примерно без дня недели. Похоже, это позволяет использовать пробел и после запятой.

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

Интересно, что формат EEE, dd MMM yyyy HH: mm: ss z будет анализировать время без дня недели. , но запятая должна быть там, например , 01 декабря 2009 08:48:25 +0000 . Таким образом, вы могли бы сделать что-то вроде того, что сказал Стив, но затем отказаться от этого и перейти к форматеру. Отсутствие запятой в формате не означает, что неделя может быть необязательной. Странно.

К сожалению, это все еще не помогает с необязательным: ss в формате. Но это может позволить вам использовать два формата вместо четырех.

1
ответ дан 30 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

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