Конвертировать из NSString в NSDate (даже если вы не знаете формат NSString) - PullRequest
2 голосов
/ 04 марта 2010

У меня есть NSString, которая может содержать 5-10 различных стилей даты и времени. Мне нужно конвертировать их все в NSDates.

Не существует ли dateWithNaturalLanguageString в iPhone SDK 3.1.3?

Мне НЕ нужно конвертировать такие вещи, как @ "в прошлую среду в 13:00".

Мне нужно преобразовать такие вещи, как: @ "01-февраля-2010" @ "1 февраля 2010 г." @ "1 февраля 2010" @ "12/31/2010" @ "12-31-2010"

(Каждый пример, который я видел, требует, чтобы вы уже ЗНАЛИ формат строки NSString. У меня есть НЕТ представление о том, какой это будет формат.)

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

Знаете ли вы все возможные форматы? Вы всегда можете попробовать создать NSDateFormatter для каждого, а затем попробовать строку, пока не будет возвращена правильная дата Это довольно глупо, но может быть лучше, чем ничего.

1 голос
/ 04 марта 2010

Я не вижу dateWithNaturalLanguageString ни в одной версии iPhone SDK; Вероятно, это была ошибка в более старой версии документации (эквивалентная функциональность в Mac OS X устарела в 10.4 и все равно никогда не работала очень хорошо).

Вместо этого просто попробуйте выполнить синтаксический анализ каждого из различных форматов даты по очереди.

Реализация синтаксического анализа дат на естественном языке, особенно таким образом, чтобы он работал для каждой локали, очень сложен. Если вам нужен анализ дат на естественном языке в другом контексте, лучшее, что я нашел, это модуль Perl Date :: Manip .

0 голосов
/ 03 сентября 2015

Вы всегда должны использовать NSDataDetector, поскольку он действительно хорошо обрабатывает неизвестные форматы, смотрите это:

Обнаружение NSDate с NSDataDetector

...