Похоже, вы хотите преобразовать строку времени в одном формате в другой формат. Подпись вашего метода должна выглядеть следующим образом:
func changeFormat(str:String) -> String {
Обратите внимание, что вы не должны выводить здесь Date
, потому что Date
s не имеют форматов . Они всегда будут напечатаны одинаково. В этом методе вам нужно сделать 2 вещи:
разобрать str
в Date
, используя DateFormatter
, указав формат HH:mm
. Кажется, вы предполагаете, что DateFormatter
может автоматически работать с этим форматом. Он не может: (
отформатировать объект Date
, который вы только что получили, используя DateFormatter
, указав формат hh:mm a
. Это создает строку, а не дату.
(Вы также можете рассмотреть возможность возврата метода Date
(тогда он будет называться parseTime
) и выполнить второй шаг непосредственно перед отображением даты для экран .)
func changeFormat(str:String) -> String {
let dateFormatter = DateFormatter()
// step 1
dateFormatter.dateFormat = "HH:mm" // input format
let date = dateFormatter.date(from: str)!
// step 2
dateFormatter.dateFormat = "hh:mm a" // output format
let string = dateFormatter.string(from: date)
return string
}