#ios #swift #nsdate #nsdateformatter #swift3
#iOS #swift #nsdate #nsdateformatter #swift3
Вопрос:
let date = "2016-05-31T19:00:00 02:00"
let dateFormatterWithTime: DateFormatter {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ss Z"
return df
}
let thisIsNil = dateFormatterWithTime.date(from: date)
Что не так с форматером? Согласно http://nsdateformatter.com / он возвращает действительную дату, но я получаю ноль от этого
Комментарии:
1. В вашем шаблоне есть пробел перед спецификатором смещения UTC. В вашем значении нет этого пробела. Возможно, это не все, что неправильно, но это то, с чего я бы начал.
2. можете ли вы кратко объяснить, почему вы добавили бы их, поскольку они уже работают?
3. Нет причин устанавливать locale на
en_US_POSIX
.
Ответ №1:
Ваш formatter
должен быть « yyyy-MM-dd'T'HH:mm:ssZ
«. Отметьте, что Z, который предназначен для зоны, не имеет промежутка между секундой и зоной в вашей дате, но в вашем формате есть пробел
Следовательно, код должен быть
let date = "2016-05-31T19:00:00 02:00"
var dateFormatterWithTime: DateFormatter {
let df = DateFormatter()
df.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
return df
}
let thisIsNil = dateFormatterWithTime.date(from: date)
print("date (thisIsNil)")
Журнал вывода:
date Optional(2016-05-31 17:00:00 0000)