Проблема в том, что вы используете неправильный формат даты. D
для "дня года". Правильный символ «день месяца» в нижнем регистре d
Именно поэтому вы получаете 85
вместо 26
.
Еще один момент, на который следует обратить внимание, это установить фиксированный языковой стандарт на "en_US_POSIX"
, если вы не хотите, чтобы в строке даты отображались пользовательские настройки и языковой стандарт.
Обратите внимание, что вы должны использовать собственный тип Swift Date
вместо NSDate
.
Если ваше намерение состоит в том, чтобы отображать его с учетом языкового стандарта и настроек пользователя, вам следует использовать форматер даты dateStyle
(короткое, среднее, длинное или полное) Как получить текущую дату в коротком формате в Swift
Если вам нужен локализованный формат даты, ограниченный
только месяц и день, вы можете использовать DateFormatter
метод dateFormat из шаблона:
class func dateFormat(fromTemplate tmplate: String, options opts: Int, locale: Locale?) -> String?
let df = DateFormatter()
df.dateFormat = DateFormatter.dateFormat(fromTemplate: "MMMMdd", options: 0, locale: .current)
df.string(from: Date()) // "March 27"