Как сравнить am pm в swift

Я почти не пытаюсь, но не могу найти, как сравнить утро и вечер.

formatter.locale = Locale(identifier: "en_US_POSIX")
        formatter.dateFormat = "h:mm a"
        formatter.amSymbol = "AM"
        formatter.pmSymbol = "PM"
        dateString = formatter.string(from: Date())

        // date Format
        dateFormatter.timeStyle = DateFormatter.Style.none;
        dateFormatter.dateStyle = DateFormatter.Style.medium;
        currentDate = dateFormatter.string(from: now);

        if self.dateString >= "09:00 AM" { return true }

Ваш вопрос довольно запутанный. Вы сказали он работает нормально, так с какими проблемами вы столкнулись?

Shubham Bakshi 26.10.2018 08:48

Что вы имеете в виду, сравнивая AM и PM. Чего вы хотите наконец добиться?

Shubham Bakshi 26.10.2018 08:51

Вы должны сравнивать даты, а не их строковые представления.

Sulthan 26.10.2018 08:52

простая логика, например if "12:00 AM"> = "21:00 PM" {return true} else {return false}

Naveen Yadav 26.10.2018 08:53

Надеюсь на эту помощь: stackoverflow.com/questions/41646542/…

Faysal Ahmed 26.10.2018 08:58

Для этого используйте Date и Calendarclass, поскольку вы не можете сравнить две строки для Сравнение по времени. Однако, если вы действительно хотите сравнить 2 Строки времени, вам нужно определить собственную логику (что может быть немного сложным)

Shubham Bakshi 26.10.2018 08:59

Как уже упоминалось другими, сравнение строк даты неверно, а в случае AM / PM - очень громоздкий способ. Самый эффективный способ - использовать Calendar и сравнить Date или DateComponents.

vadian 26.10.2018 09:06
1
7
662
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В iOS Apple предоставляет функцию сравнения для сравнения двух объектов Date. Пожалуйста, найдите приведенный ниже код для сравнения времени

    let formatter = DateFormatter()
    formatter.locale = Locale(identifier: "en_US_POSIX")
    formatter.dateFormat = "h:mm a"
    formatter.amSymbol = "AM"
    formatter.pmSymbol = "PM"
    let timeString = formatter.string(from: Date())

    let firstTime = formatter.date(from: "09:00 AM")
    let secondTime = formatter.date(from: dateString)


    if firstTime?.compare(secondTime!) == .orderedAscending {
        print("First Time is smaller then Second Time")
    }

Другие вопросы по теме