Q: - ... "Можно использовать любой класс, реализующий интерфейс?" A: - Да.
Q: -... «Когда вам это нужно?» A: - Каждый раз, когда вам нужен класс (ы), который реализует интерфейс (ы).
blockquote>Примечание: мы не смогли создать интерфейс, не реализованный классом - Правда.
- почему?
- , потому что интерфейс имеет только прототипы методов, а не определения (просто имена функций, а не их логика)
AnIntf anInst = new Aclass (); // мы могли бы сделать это, только если Aclass реализует AnIntf. // anInst будет иметь ссылку на Aclass.
blockquote>Примечание: Теперь мы могли бы понять что происходит, если Bclass и Cclass реализуют один и тот же Dintf.
Dintf bInst = new Bclass(); // now we could call all Dintf functions implemented (defined) in Bclass. Dintf cInst = new Cclass(); // now we could call all Dintf functions implemented (defined) in Cclass.
Что мы имеем: те же интерфейсные прототипы (имена функций в интерфейсе) и вызываем разные реализации.
Библиография: Прототипы - википедия
Вам просто нужно установить свойство календаря даты форматирования:
Xcode 8.2.1 • Swift 3.0.2
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .iso8601)
dateFormatter.locale = Locale(identifier: "es")
dateFormatter.dateFormat = "dd 'de' MMMM"
dateFormatter.date(from: "8 de octubre") // "Oct 8, 2000, 1:00 AM"