2017-02-10 16 views
0

Я только что нашел странную проблему. Я попытался разобрать недопустимую дату, например 1999-02-31 23:30:00, используя NSDateFormatter.NSDateFormatter с недопустимыми датами

var str = "1999-02-31 23:30:00" 
var f = DateFormatter() 
f.dateFormat = "yyyy-MM-dd HH:mm:ss" 
f.locale = Locale(identifier: "it") 
// f.calendar = Calendar.current 
f.timeZone = TimeZone(identifier: "Europe/Rome")! 
let parsedDate = f.date(from: str) 

В результате nil если вы разобрать его без установки календаря; после того, как вы установили его, результатом будет дата, скорректированная на дополнительный день, добавленный к неправильной дате (3 марта 1999 г.).

Это известная проблема или я что-то упускаю?

ответ

0

Я нашел isLenient недвижимости. После установки форматтер будет использовать эвристику, чтобы угадать дату, которая предназначена для строки. Как и в случае любых догадок, это может привести к неправильной дате результата (то есть к дате, отличной от той, которая была предназначена).