В каком формате эта строка даты?

Я пытаюсь преобразовать кучу NSString в объекты 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», на которой я застрял.

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


person JDx    schedule 25.04.2013    source источник


Ответы (2)


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

См. раздел Шаблоны формата даты Unicode.

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

person rmaddy    schedule 25.04.2013

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

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

Год: ГГГГ (например, 1997) Год и месяц: ГГГГ-ММ (например, 1997-07) Полная дата: ГГГГ-ММ-ДД (например, 1997-07-16) Полная дата плюс часы и минуты: ГГГГ-ММ-ДДThh:mmTZD (например, 1997-07-16T19:20+01:00) Полная дата плюс часы, минуты и секунды: ГГГГ-ММ-ДДThh:mm:ssTZD (например, 1997-07-16T19:20:30+01:00) Полная дата плюс часы, минуты, секунды и десятичная доля секунды 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 к формату

person andreag    schedule 25.04.2013
comment
Это неправильные спецификаторы формата для использования с NSDateFormatter. - person rmaddy; 25.04.2013
comment
@rmaddy Название вопроса на самом деле говорит: «В каком формате находится эта строка даты?» и мой ответ делает именно это. - person andreag; 25.04.2013
comment
Но вопрос для iOS и с тегом NSDateFormatter. Таким образом, ответ должен соответствовать этому параметру. - person rmaddy; 25.04.2013