2015-09-22 12 views
0

Как можно преобразовать Sep 15, 2015, 20:49:00 в 2015-09-15T20:49:00 с помощью Swift? Я извлекаю объект date из Parse, но его нужно преобразовать в другой формат.Преобразование даты строки в NSDate?

EDIT ПОСЛЕ ОТМЕТИЛИ DUPLICATE:

Я использую это:

let time = "Sat Sep 19 2015 19:03:47 GMT+0000 (UTC)" 

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.SSS'Z'" 
let date = dateFormatter.dateFromString(listenTime) 

... и получать nil. Итак, что я делаю неправильно?

+0

попробовать так: .dateFormat = "EEE ' 'LLL' 'дд' 'YYYY' 'HH: мм: сс' GMT + 0000 (UTC)" Вы должны указать также календарь NSCalendarIdentifierISO8601, timeZone «GMT» и локаль «en_US_POSIX» –

+0

Можете ли вы отправить ответ? Я получаю неправильный час. Должна быть проблема с часовым поясом. – chicobermuda

+0

Вы вводите UTC в час, вероятно, ваше местное время, соответствующее введенному времени UTC –

ответ

1
let time = "Sat Sep 19 2015 19:03:47 GMT+0000 (UTC)" 
let df = NSDateFormatter() 
df.calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierISO8601) 
df.locale = NSLocale(localeIdentifier: "en_US_POSIX") 
df.timeZone = NSTimeZone(abbreviation: "GMT") 
df.dateFormat = "EEE LLL dd yyyy HH:mm:ss' GMT+0000 (UTC)'" 
if let date = df.dateFromString(time) { 
    df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss" 
    let stringFromDate = df.stringFromDate(date) // "2015-09-19T19:03:47" 
} 
+0

Нет необходимости указывать пробелы в формате даты. Только буквы, которые следует рассматривать как литералы. – rmaddy

+0

Я обычно не знаю, но в конце строки нужно игнорировать суффикс gmt, что я не нашел соответствующую букву для этого конкретного формата. –

+0

Я имел в виду просто: '" EEE LLL dd yyyy HH: mm : ss 'GMT + 0000 (UTC)' "' – rmaddy

Смежные вопросы