Попытка преобразовать тип средства форматирования даты (из средства выбора времени) в целое число - PullRequest
0 голосов
/ 15 апреля 2020

у меня возникли некоторые проблемы, я получаю текущее время из средства выбора даты amPicker_out

Я использую средство форматирования даты, чтобы просто получить минуты, необходимые для преобразования этих двух цифр времени в целое число , Когда я пытаюсь преобразовать его, я получаю эту ошибку

"Невозможно вызвать инициализатор для типа 'Int' со списком аргументов типа '(DateFormatter)'"

Любой идеи, где я иду не так?

   func getTime()
    {

        let amPickerMinutes = DateFormatter()

        amPickerMinutes.dateFormat = "mm"


      // convert amPickerMinutes to Integer
      let amPickerMinutesInt = Int(amPickerMinutes)

        print(amPickerMinutesInt)
    }

Ответы [ 3 ]

0 голосов
/ 15 апреля 2020

Вы пытаетесь конвертировать DateTimeFormatter в Int. Вы должны отформатировать некоторую дату с этим форматером, а затем привести это значение к Int

    func getTime(date:Date){

        let amPickerMinutes = DateFormatter()
        amPickerMinutes.dateFormat = "mm"

        let minutes = amPickerMinutes.string(from: date)
        let amPickerMinutesInt = Int(minutes)

        print(amPickerMinutesInt)

    }

getTime(date: Date()) // call your function parsing your date picker value
0 голосов
/ 15 апреля 2020

Чтобы получить минуты, вам нужно позвонить stringFromDate, передавая дату

let amPickerMinutes = DateFormatter()
amPickerMinutes.dateFormat = "mm"
// convert amPickerMinutes to Integer
let amPickerMinutesInt = Int(amPickerMinutes.string(from: picker.date))!

Однако Calendar предоставляет более удобный API

let amPickerMinutesInt = Calendar.current.component(.minute, from: picker.date)
0 голосов
/ 15 апреля 2020

Вы конвертируете объект форматирования даты в Int, отсюда и предупреждение. Нужно сделать что-то вроде:

    func getTime() {

        let amPickerMinutes = DateFormatter()

        amPickerMinutes.dateFormat = "mm"

        // convert amPickerMinutes to Integer
        let dateString = amPickerMinutes.string(from: amPicker_out.date)
        if let amPickerMinutesInt = Int(dateString) {
            print(amPickerMinutesInt)
        }

        // Prefer using calendar instead 
        let amPickerMinutesInt = Calendar.current.component(.minute, from: amPicker_out.date)
        print(amPickerMinutesInt)
    }
...