2013-04-25 4 views
4

Im пытается конвертировать кучу NSStrings в объекты NSDate. Вот пример строки:В каком формате находится эта строка даты?

2013-04-25T15:51:30.427+1.00 

Но я не могу понять, какой формат он находится, до сих пор у меня есть (Вопросительные знаки являются битами Я озадачен с):

yyyy-MM-ddTHH:mm:ss????zzz 

Основная проблема, с которой я столкнулся, связана с частью «.427», хотя, если я ошибаюсь в другом месте, дайте мне знать :)

Есть ли у кого-нибудь идеи? Или можете указать мне список всех возможных спецификаторов формата даты? Я нашел это: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx, который полезен, но у него нет никакого спецификатора для части «.427», на которой я застрял.

Любая помощь приветствуется, спасибо.

ответ

11

Правильный формат является yyyy-MM-dd'T'HH:mm:ss.SSSZZZZZ.

См. Unicode Date Format Patterns.

Также в iOS 6 был добавлен формат ZZZZZ для формата часового пояса +00:00 и не поддерживается в iOS 5 или ранее.

0

Это действительный формат даты, как определено стандартом ISO 8601, в соответствии с W3

Форматы следующим образом. Точно указанные компоненты должны быть представлены как с точно такой пунктуацией. Обратите внимание, что «T» появляется буквально в строке, чтобы указать начало элемента времени , как указано в ИСО 8601

Год: YYYY (например, 1997) год и месяц: YYYY-MM (например, 1997-07) Дата завершения: ГГГГ-ММ-ДД (например, 1997-07-16) Полная дата плюс часы и минуты: ГГГГ-ММ-ДДТч: mmTZD (например, 1997-07-16T19: 20 + 01: 00) Полная дата плюс часы, минуты и секунды: YYYY-MM-DDThh: mm: ssTZD (например, 1997-07-16T19: 20: 30 + 01: 00) Полная дата плюс часы, минуты, секунды и десятичная доля second YYYY-MM-DDThh: mm: ss.sTZD (например, 1997-07-16T19: 20: 30.45 + 01: 00)

где:

YYYY = four-digit year 
MM = two-digit month (01=January, etc.) 
DD = two-digit day of month (01 through 31) 
hh = two digits of hour (00 through 23) (am/pm NOT allowed) 
mm = two digits of minute (00 through 59) 
ss = two digits of second (00 through 59) 
s = one or more digits representing a decimal fraction of a second 
TZD = time zone designator (Z or +hh:mm or -hh:mm) 

В вашем случае, дата имеет миллисекунды точности, попробуйте добавить .sss в формате

+2

Это не соответствующие спецификаторы формата для использования с 'NSDateFormatter'. – rmaddy

+0

@rmaddy Название вопроса, собственно, говорит: «В каком формате это строка даты?» и мой ответ делает именно это. – andreagiavatto

+0

Но вопрос для iOS и помечен NSDateFormatter. Поэтому ответ должен соответствовать этой настройке. – rmaddy