2015-02-13 5 views
3

Я нашел кое-что, что могло бы решить мою проблему в Obj-c, но я не могу перевести код, поэтому я прошу решение Swift.Swift: NSDateFormatter dateFromString возвращает nil на устройствах

Я разбираю некоторые данные из файла JSON, и у меня возникает проблема с получением даты; вот код:

println(data) // "Fri, 16 Jan 2015 11:49:00 +0100" 

var dateFormatter   = NSDateFormatter() 
dateFormatter.dateFormat = "EEE, dd LLL yyyy HH:mm:ss ZZZ" 
let formattedDate   = dateFormatter.dateFromString(data) 

println(formattedDate) // returns 'Optional(2015-01-16 11:49:00 +0100)' if running on an iOs Simulator 
         // returns 'nil' if runnig on an iPhone 

Как я пишу в комментариях в коде, я получаю правильно дополнительный тип даты, если я запускаю его на ИОС Simulator или на детской площадке, но я получаю ноль, если он работает на iPhone.

Может ли кто-нибудь помочь? Спасибо в консультации ..

P.S. Извините за мой плохой английский

+0

Добавить TIMEZONE/локали вашей 'dateFormatter' может быть? – Larme

+0

добавление dateFormatter.timeZone = NSTimeZone (сокращение: «GMT») не изменяет результат. – Stizz

+0

@Stizz: проверьте с помощью 'dateFormatter.dateFormat =" EEE, dd MMM yyyy HH: mm: ss Z "' –

ответ

1

Для других, которые получают здесь и не читать комментарии первоначального поста;)

Как @rintaro отметил - и то, что моя проблема тоже - вы должны добавить локаль при использовании даты фиксированного формата:

Если вы работаете с датами фиксированного формата, вы должны сначала установить локализаций даты форматировщиком к чему-то соответствующее для фиксированного формата . В большинстве случаев лучше локали, чтобы выбрать это en_US_POSIX

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/DataFormatting/Articles/dfDateFormatting10_4.html#//apple_ref/doc/uid/TP40002369-SW7

Так Swift 3 вы бы добавить

dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
Смежные вопросы